Skip to content

Commit 499fbde

Browse files
Add a rudimentary filter option when listing entities
This change adds the ability to filter the list of entities returned by the API by entity owner, name or endpoint, depending on the entity type. Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
1 parent 2fd0e72 commit 499fbde

32 files changed

Lines changed: 879 additions & 73 deletions

apiserver/controllers/enterprises.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,30 @@ func (a *APIController) CreateEnterpriseHandler(w http.ResponseWriter, r *http.R
6666
//
6767
// List all enterprises.
6868
//
69+
// Parameters:
70+
// + name: name
71+
// description: Exact enterprise name to filter by
72+
// type: string
73+
// in: query
74+
// required: false
75+
//
76+
// + name: endpoint
77+
// description: Exact endpoint name to filter by
78+
// type: string
79+
// in: query
80+
// required: false
81+
//
6982
// Responses:
7083
// 200: Enterprises
7184
// default: APIErrorResponse
7285
func (a *APIController) ListEnterprisesHandler(w http.ResponseWriter, r *http.Request) {
7386
ctx := r.Context()
7487

75-
enterprise, err := a.r.ListEnterprises(ctx)
88+
filter := runnerParams.EnterpriseFilter{
89+
Name: r.URL.Query().Get("name"),
90+
Endpoint: r.URL.Query().Get("endpoint"),
91+
}
92+
enterprise, err := a.r.ListEnterprises(ctx, filter)
7693
if err != nil {
7794
slog.With(slog.Any("error", err)).ErrorContext(ctx, "listing enterprise")
7895
handleError(ctx, w, err)

apiserver/controllers/organizations.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,30 @@ func (a *APIController) CreateOrgHandler(w http.ResponseWriter, r *http.Request)
6767
//
6868
// List organizations.
6969
//
70+
// Parameters:
71+
// + name: name
72+
// description: Exact organization name to filter by
73+
// type: string
74+
// in: query
75+
// required: false
76+
//
77+
// + name: endpoint
78+
// description: Exact endpoint name to filter by
79+
// type: string
80+
// in: query
81+
// required: false
82+
//
7083
// Responses:
7184
// 200: Organizations
7285
// default: APIErrorResponse
7386
func (a *APIController) ListOrgsHandler(w http.ResponseWriter, r *http.Request) {
7487
ctx := r.Context()
7588

76-
orgs, err := a.r.ListOrganizations(ctx)
89+
filter := runnerParams.OrganizationFilter{
90+
Name: r.URL.Query().Get("name"),
91+
Endpoint: r.URL.Query().Get("endpoint"),
92+
}
93+
orgs, err := a.r.ListOrganizations(ctx, filter)
7794
if err != nil {
7895
slog.With(slog.Any("error", err)).ErrorContext(ctx, "listing orgs")
7996
handleError(ctx, w, err)

apiserver/controllers/repositories.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,37 @@ func (a *APIController) CreateRepoHandler(w http.ResponseWriter, r *http.Request
6767
//
6868
// List repositories.
6969
//
70+
// Parameters:
71+
// + name: owner
72+
// description: Exact owner name to filter by
73+
// type: string
74+
// in: query
75+
// required: false
76+
//
77+
// + name: name
78+
// description: Exact repository name to filter by
79+
// type: string
80+
// in: query
81+
// required: false
82+
//
83+
// + name: endpoint
84+
// description: Exact endpoint name to filter by
85+
// type: string
86+
// in: query
87+
// required: false
88+
//
7089
// Responses:
7190
// 200: Repositories
7291
// default: APIErrorResponse
7392
func (a *APIController) ListReposHandler(w http.ResponseWriter, r *http.Request) {
7493
ctx := r.Context()
7594

76-
repos, err := a.r.ListRepositories(ctx)
95+
filter := runnerParams.RepositoryFilter{
96+
Name: r.URL.Query().Get("name"),
97+
Owner: r.URL.Query().Get("owner"),
98+
Endpoint: r.URL.Query().Get("endpoint"),
99+
}
100+
repos, err := a.r.ListRepositories(ctx, filter)
77101
if err != nil {
78102
slog.With(slog.Any("error", err)).ErrorContext(ctx, "listing repositories")
79103
handleError(ctx, w, err)

apiserver/swagger.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,15 @@ paths:
418418
/enterprises:
419419
get:
420420
operationId: ListEnterprises
421+
parameters:
422+
- description: Exact enterprise name to filter by
423+
in: query
424+
name: name
425+
type: string
426+
- description: Exact endpoint name to filter by
427+
in: query
428+
name: endpoint
429+
type: string
421430
responses:
422431
"200":
423432
description: Enterprises
@@ -1254,6 +1263,15 @@ paths:
12541263
/organizations:
12551264
get:
12561265
operationId: ListOrgs
1266+
parameters:
1267+
- description: Exact organization name to filter by
1268+
in: query
1269+
name: name
1270+
type: string
1271+
- description: Exact endpoint name to filter by
1272+
in: query
1273+
name: endpoint
1274+
type: string
12571275
responses:
12581276
"200":
12591277
description: Organizations
@@ -1754,6 +1772,19 @@ paths:
17541772
/repositories:
17551773
get:
17561774
operationId: ListRepos
1775+
parameters:
1776+
- description: Exact owner name to filter by
1777+
in: query
1778+
name: owner
1779+
type: string
1780+
- description: Exact repository name to filter by
1781+
in: query
1782+
name: name
1783+
type: string
1784+
- description: Exact endpoint name to filter by
1785+
in: query
1786+
name: endpoint
1787+
type: string
17571788
responses:
17581789
"200":
17591790
description: Repositories

client/enterprises/list_enterprises_parameters.go

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/organizations/list_orgs_parameters.go

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)