Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjust openapi for SavedSearchResponse #1267

Merged
merged 1 commit into from
Mar 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
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
28 changes: 22 additions & 6 deletions backend/pkg/httpserver/create_saved_search_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,8 +257,14 @@ func TestCreateSavedSearch(t *testing.T) {
Name: "test name",
Query: `name:"test"`,
Description: nil,
CreatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
Permissions: &backend.UserSavedSearchPermissions{
Role: valuePtr(backend.SavedSearchOwner),
},
BookmarkStatus: &backend.UserSavedSearchBookmark{
Status: backend.BookmarkActive,
},
CreatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
},
err: nil,
},
Expand All @@ -274,7 +280,9 @@ func TestCreateSavedSearch(t *testing.T) {
"id":"searchID1",
"name":"test name",
"query":"name:\"test\"",
"updated_at":"2000-01-01T00:00:00Z"
"updated_at":"2000-01-01T00:00:00Z",
"bookmark_status":{"status":"bookmark_active"},
"permissions":{"role":"saved_search_owner"}
}`,
),
},
Expand All @@ -292,8 +300,14 @@ func TestCreateSavedSearch(t *testing.T) {
Name: "test name",
Query: `name:"test"`,
Description: valuePtr("test description"),
CreatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
Permissions: &backend.UserSavedSearchPermissions{
Role: valuePtr(backend.SavedSearchOwner),
},
BookmarkStatus: &backend.UserSavedSearchBookmark{
Status: backend.BookmarkActive,
},
CreatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC),
},
err: nil,
},
Expand All @@ -316,7 +330,9 @@ func TestCreateSavedSearch(t *testing.T) {
"name":"test name",
"description" : "test description",
"query":"name:\"test\"",
"updated_at":"2000-01-01T00:00:00Z"
"updated_at":"2000-01-01T00:00:00Z",
"bookmark_status":{"status":"bookmark_active"},
"permissions":{"role":"saved_search_owner"}
}`,
),
},
Expand Down
42 changes: 24 additions & 18 deletions backend/pkg/httpserver/list_saved_searches.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,28 +26,34 @@ func getSavedSearches() []backend.SavedSearchResponse {

return []backend.SavedSearchResponse{
{
CreatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
Description: &test1Description,
Id: "1",
Name: "a query I subscribe to",
Query: "group:css",
CreatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
Description: &test1Description,
Id: "1",
Name: "a query I subscribe to",
Query: "group:css",
BookmarkStatus: nil,
Permissions: nil,
},
{
CreatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
Description: nil,
Id: "2",
Name: "my personal query",
Query: "available_on:chrome AND group:css",
CreatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
Description: nil,
Id: "2",
Name: "my personal query",
Query: "available_on:chrome AND group:css",
BookmarkStatus: nil,
Permissions: nil,
},
{
CreatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
Description: nil,
Id: "3",
Name: "a new query",
Query: "available_on:chrome",
CreatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
UpdatedAt: time.Date(2024, time.September, 1, 1, 0, 0, 0, time.UTC),
Description: nil,
Id: "3",
Name: "a new query",
Query: "available_on:chrome",
BookmarkStatus: nil,
Permissions: nil,
},
}
}
Expand Down
45 changes: 39 additions & 6 deletions lib/gcpspanner/spanneradapters/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,15 +391,48 @@ func (s *Backend) CreateUserSavedSearch(ctx context.Context, userID string,
}

return &backend.SavedSearchResponse{
Id: *output,
CreatedAt: createdSavedSearch.CreatedAt,
UpdatedAt: createdSavedSearch.UpdatedAt,
Name: createdSavedSearch.Name,
Query: createdSavedSearch.Query,
Description: createdSavedSearch.Description,
Id: *output,
CreatedAt: createdSavedSearch.CreatedAt,
UpdatedAt: createdSavedSearch.UpdatedAt,
Name: createdSavedSearch.Name,
Query: createdSavedSearch.Query,
Description: createdSavedSearch.Description,
BookmarkStatus: convertSavedSearchIsBookmarkedFromGCP(createdSavedSearch.IsBookmarked),
Permissions: convertSavedSearchRoleFromGCP(createdSavedSearch.Role),
}, nil
}

func convertSavedSearchIsBookmarkedFromGCP(isBookmarked *bool) *backend.UserSavedSearchBookmark {
if isBookmarked == nil {
return nil
}

status := backend.BookmarkNone
if *isBookmarked {
status = backend.BookmarkActive
}

return &backend.UserSavedSearchBookmark{
Status: status,
}
}

// Roles can be found in lib/gcpspanner/saved_search_user_roles.go.
func convertSavedSearchRoleFromGCP(role *string) *backend.UserSavedSearchPermissions {
if role == nil {
return nil
}

switch gcpspanner.SavedSearchRole(*role) {
case gcpspanner.SavedSearchOwner:
return &backend.UserSavedSearchPermissions{
Role: valuePtr(backend.SavedSearchOwner),
}
}

return nil
}

func (s *Backend) DeleteUserSavedSearch(ctx context.Context, userID, savedSearchID string) error {
err := s.client.DeleteUserSavedSearch(ctx, gcpspanner.DeleteUserSavedSearchRequest{
SavedSearchID: savedSearchID,
Expand Down
6 changes: 6 additions & 0 deletions lib/gcpspanner/spanneradapters/backend_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1466,6 +1466,12 @@ func TestCreateUserSavedSearch(t *testing.T) {
Name: "test search",
Description: valuePtr("test description"),
Query: "test query",
Permissions: &backend.UserSavedSearchPermissions{
Role: valuePtr(backend.SavedSearchOwner),
},
BookmarkStatus: &backend.UserSavedSearchBookmark{
Status: backend.BookmarkActive,
},
},
expectedError: nil,
},
Expand Down
51 changes: 23 additions & 28 deletions openapi/backend/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -568,28 +568,6 @@ paths:
parameters:
- $ref: '#/components/parameters/paginationTokenParam'
- $ref: '#/components/parameters/paginationSizeParam'
- in: query
name: role
schema:
type: string
enum:
- owner
description: Filter by role (currently only 'owner' is supported).
- in: query
name: bookmark_status
schema:
type: string
enum:
- active
description: Filter by bookmark status (currently only 'active' is supported).
- in: query
name: sort
schema:
type: string
enum:
- search_updated_at_asc
- search_updated_at_desc
description: Sort order to apply to the results.
security:
- bearerAuth:
responses:
Expand Down Expand Up @@ -1264,22 +1242,39 @@ components:
query:
type: string
minLength: 1
UserSavedSearchBookmarkStatus:
type: string
description: |
The bookmark status for a saved search for a user.
enum:
- bookmark_none
- bookmark_active
UserSavedSearchBookmark:
type: object
properties:
status:
type: string
description: |
The bookmark status for a saved search for a user.
enum:
- none
- active
$ref: '#/components/schemas/UserSavedSearchBookmarkStatus'
required:
- status
SavedSearchResponse:
allOf:
- $ref: '#/components/schemas/GenericUpdatableUniqueModel'
- $ref: '#/components/schemas/SavedSearch'
- type: object
properties:
permissions:
$ref: '#/components/schemas/UserSavedSearchPermissions'
bookmark_status:
$ref: '#/components/schemas/UserSavedSearchBookmark'
UserSavedSearchRole:
type: string
enum:
- saved_search_owner
UserSavedSearchPermissions:
type: object
properties:
role:
$ref: '#/components/schemas/UserSavedSearchRole'
UserSavedSearchPage:
type: object
properties:
Expand Down
Loading