Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions core/resource/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,12 @@ func (res Resource) CreateURN() string {
}

type Filter struct {
ProjectID string
ProjectID []string
GroupID string
OrganizationID string
NamespaceID string
NamespaceID []string
URN []string
Name []string
Limit int32
Page int32
}
Expand Down
6 changes: 4 additions & 2 deletions internal/api/v1beta1/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@ func (h Handler) ListResources(ctx context.Context, request *shieldv1beta1.ListR
var resources []*shieldv1beta1.Resource

filters := resource.Filter{
NamespaceID: request.GetNamespaceId(),
NamespaceID: request.GetNamespaceIds(),
OrganizationID: request.GetOrganizationId(),
ProjectID: request.GetProjectId(),
ProjectID: request.GetProjectIds(),
GroupID: request.GetGroupId(),
URN: request.GetUrns(),
Name: request.GetNames(),
Limit: request.GetPageSize(),
Page: request.GetPageNum(),
}
Expand Down
10 changes: 8 additions & 2 deletions internal/store/postgres/resource_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func (r ResourceRepository) List(ctx context.Context, flt resource.Filter) ([]re
offset := (flt.Page - 1) * flt.Limit

sqlStatement := dialect.From(TABLE_RESOURCES)
if flt.ProjectID != "" {
if len(flt.ProjectID) > 0 {
sqlStatement = sqlStatement.Where(goqu.Ex{"project_id": flt.ProjectID})
}
if flt.GroupID != "" {
Expand All @@ -176,9 +176,15 @@ func (r ResourceRepository) List(ctx context.Context, flt resource.Filter) ([]re
if flt.OrganizationID != "" {
sqlStatement = sqlStatement.Where(goqu.Ex{"org_id": flt.OrganizationID})
}
if flt.NamespaceID != "" {
if len(flt.NamespaceID) > 0 {
sqlStatement = sqlStatement.Where(goqu.Ex{"namespace_id": flt.NamespaceID})
}
if len(flt.URN) > 0 {
sqlStatement = sqlStatement.Where(goqu.Ex{"urn": flt.URN})
}
if len(flt.Name) > 0 {
sqlStatement = sqlStatement.Where(goqu.Ex{"name": flt.Name})
}
sqlStatement = sqlStatement.Limit(uint(flt.Limit)).Offset(uint(offset))
query, params, err := sqlStatement.ToSQL()
if err != nil {
Expand Down
12 changes: 6 additions & 6 deletions internal/store/postgres/resource_repository_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -488,9 +488,9 @@ func (s *ResourceRepositoryTestSuite) TestList() {
{
Description: "should get filtered resources",
Filter: resource.Filter{
ProjectID: s.projects[1].ID,
ProjectID: []string{s.projects[1].ID},
OrganizationID: s.orgs[1].ID,
NamespaceID: s.namespaces[1].ID,
NamespaceID: []string{s.namespaces[1].ID},
},
ExpectedResources: []resource.Resource{
{
Expand Down Expand Up @@ -571,9 +571,9 @@ func (s *ResourceRepositoryTestSuite) TestList() {
Filter: resource.Filter{
Page: 1,
Limit: 2,
ProjectID: s.projects[1].ID,
ProjectID: []string{s.projects[1].ID},
OrganizationID: s.orgs[1].ID,
NamespaceID: s.namespaces[1].ID,
NamespaceID: []string{s.namespaces[1].ID},
},
ExpectedResources: []resource.Resource{
{
Expand All @@ -592,9 +592,9 @@ func (s *ResourceRepositoryTestSuite) TestList() {
Filter: resource.Filter{
Page: 2,
Limit: 2,
ProjectID: s.projects[1].ID,
ProjectID: []string{s.projects[1].ID},
OrganizationID: s.orgs[1].ID,
NamespaceID: s.namespaces[1].ID,
NamespaceID: []string{s.namespaces[1].ID},
},
},
}
Expand Down
28 changes: 24 additions & 4 deletions proto/shield.swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -769,18 +769,24 @@ paths:
in: query
required: false
type: string
- name: projectId
- name: projectIds
in: query
required: false
type: string
type: array
items:
type: string
collectionFormat: multi
- name: organizationId
in: query
required: false
type: string
- name: namespaceId
- name: namespaceIds
in: query
required: false
type: string
type: array
items:
type: string
collectionFormat: multi
- name: pageSize
in: query
required: false
Expand All @@ -791,6 +797,20 @@ paths:
required: false
type: integer
format: int32
- name: urns
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
- name: names
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
tags:
- Resource
post:
Expand Down
Loading
Loading