1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

teams: Correctly handle more than 50 teams.

The page size limit for GET requests on /api/v1/orgs/guix/teams is 50.  Thus,
‘organization-teams’ was previously reporting at most 50 teams, even though
there are now 52 of them.  This patch fixes that.

* etc/teams.scm (organization-teams): Rename to…
(organization-teams/paginated): … this.  Add ‘page’ parameter and honor it.
Remove “limit” URL parameter.
(organization-teams): New procedure.

Fixes: guix/guix#5833
Reported-by: Maxim Cournoyer <maxim@guixotic.coop>
Change-Id: Ia25685e001e8522ca4268557ade7d29b5106ae00
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5883
This commit is contained in:
Ludovic Courtès
2026-01-24 21:39:53 +01:00
parent cf81cfadbd
commit 9dd02e1f91

View File

@@ -285,14 +285,25 @@ PARAMETERS."
;; API documentation at <https://codeberg.org/api/swagger>.
(define-forgejo-request (organization-teams organization)
"Return the list of teams of ORGANIZATION."
(define-forgejo-request (organization-teams/paginated organization page)
"Return the list of teams of ORGANIZATION, for the given PAGE (1-indexed)."
(GET "orgs" organization "teams"
& '(("limit" . "100"))) ;get up to 100 teams
& `(("page" . ,(number->string page))))
=> 200
(lambda (port)
(map json->forgejo-team (vector->list (json->scm port)))))
(define (organization-teams token organization)
"Return the list of teams of ORGANIZATION."
(let loop ((index 1)
(pages '()))
(match (organization-teams/paginated token organization index)
(()
(concatenate (reverse pages)))
(lst
(loop (+ 1 index)
(cons lst pages))))))
(define-forgejo-request (create-team organization team)
"Create TEAM, a Forgejo team, under ORGANIZATION."
(POST "orgs" organization "teams")