@@ -98,8 +98,13 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
9898 ctx := r .Context ()
9999 apiKey := httpmw .APIKey (r )
100100
101+ page , ok := parsePagination (rw , r )
102+ if ! ok {
103+ return
104+ }
105+
101106 queryStr := r .URL .Query ().Get ("q" )
102- filter , errs := workspaceSearchQuery (queryStr )
107+ filter , errs := workspaceSearchQuery (queryStr , page )
103108 if len (errs ) > 0 {
104109 httpapi .Write (ctx , rw , http .StatusBadRequest , codersdk.Response {
105110 Message : "Invalid workspace search query." ,
@@ -1072,11 +1077,15 @@ func validWorkspaceSchedule(s *string, min time.Duration) (sql.NullString, error
10721077
10731078// workspaceSearchQuery takes a query string and returns the workspace filter.
10741079// It also can return the list of validation errors to return to the api.
1075- func workspaceSearchQuery (query string ) (database.GetWorkspacesParams , []codersdk.ValidationError ) {
1080+ func workspaceSearchQuery (query string , page codersdk.Pagination ) (database.GetWorkspacesParams , []codersdk.ValidationError ) {
1081+ filter := database.GetWorkspacesParams {
1082+ Offset : int32 (page .Offset ),
1083+ Limit : int32 (page .Limit ),
1084+ }
10761085 searchParams := make (url.Values )
10771086 if query == "" {
10781087 // No filter
1079- return database. GetWorkspacesParams {} , nil
1088+ return filter , nil
10801089 }
10811090 query = strings .ToLower (query )
10821091 // Because we do this in 2 passes, we want to maintain quotes on the first
@@ -1112,13 +1121,10 @@ func workspaceSearchQuery(query string) (database.GetWorkspacesParams, []codersd
11121121 // Using the query param parser here just returns consistent errors with
11131122 // other parsing.
11141123 parser := httpapi .NewQueryParamParser ()
1115- filter := database.GetWorkspacesParams {
1116- Deleted : false ,
1117- OwnerUsername : parser .String (searchParams , "" , "owner" ),
1118- TemplateName : parser .String (searchParams , "" , "template" ),
1119- Name : parser .String (searchParams , "" , "name" ),
1120- Status : parser .String (searchParams , "" , "status" ),
1121- }
1124+ filter .OwnerUsername = parser .String (searchParams , "" , "owner" )
1125+ filter .TemplateName = parser .String (searchParams , "" , "template" )
1126+ filter .Name = parser .String (searchParams , "" , "name" )
1127+ filter .Status = parser .String (searchParams , "" , "status" )
11221128
11231129 return filter , parser .Errors
11241130}
0 commit comments