Commit 3403db19 by Benjamin Blattberg Committed by GitHub

API: Support paging in the admin orgs list API (#26932)

* Add page/limit to org search

* Update docs

* Fix test per PR feedback
parent 214c1078
......@@ -325,7 +325,7 @@ Content-Type: application/json
### Search all Organizations
`GET /api/orgs`
`GET /api/orgs?perpage=10&page=1`
Only works with Basic Authentication (username and password), see [introduction](#admin-organizations-api).
......@@ -339,6 +339,8 @@ Content-Type: application/json
Note: The api will only work when you pass the admin name and password
to the request HTTP URL, like http://admin:admin@localhost:3000/api/orgs
Default value for the `perpage` parameter is `1000` and for the `page` parameter is `0`.
**Example Response**:
```http
......
......@@ -160,11 +160,18 @@ func DeleteOrgByID(c *models.ReqContext) Response {
}
func SearchOrgs(c *models.ReqContext) Response {
perPage := c.QueryInt("perpage")
if perPage <= 0 {
perPage = 1000
}
page := c.QueryInt("page")
query := models.SearchOrgsQuery{
Query: c.Query("query"),
Name: c.Query("name"),
Page: 0,
Limit: 1000,
Page: page,
Limit: perPage,
}
if err := bus.Dispatch(&query); err != nil {
......
......@@ -35,6 +35,38 @@ func TestAccountDataAccess(t *testing.T) {
So(len(query.Result), ShouldEqual, 3)
})
Convey("Given we have organizations, we can limit and paginate search", func() {
for i := 1; i < 4; i++ {
cmd := &models.CreateOrgCommand{Name: fmt.Sprint("Org #", i)}
err := CreateOrg(cmd)
So(err, ShouldBeNil)
}
Convey("Should be able to search with defaults", func() {
query := &models.SearchOrgsQuery{}
err := SearchOrgs(query)
So(err, ShouldBeNil)
So(len(query.Result), ShouldEqual, 3)
})
Convey("Should be able to limit search", func() {
query := &models.SearchOrgsQuery{Limit: 1}
err := SearchOrgs(query)
So(err, ShouldBeNil)
So(len(query.Result), ShouldEqual, 1)
})
Convey("Should be able to limit and paginate search", func() {
query := &models.SearchOrgsQuery{Limit: 2, Page: 1}
err := SearchOrgs(query)
So(err, ShouldBeNil)
So(len(query.Result), ShouldEqual, 1)
})
})
Convey("Given single org mode", func() {
setting.AutoAssignOrg = true
setting.AutoAssignOrgId = 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment