Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2a8c1b3

Browse files
committed
Add types, start writing count function
1 parent 9317155 commit 2a8c1b3

File tree

4 files changed

+72
-4
lines changed

4 files changed

+72
-4
lines changed

coderd/workspaces.go

+42
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,48 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
157157
httpapi.Write(ctx, rw, http.StatusOK, wss)
158158
}
159159

160+
func (api *API) workspaceCount(rw http.ResponseWriter, r *http.Request) {
161+
ctx := r.Context()
162+
apiKey := httpmw.APIKey(r)
163+
164+
queryStr := r.URL.Query().Get("q")
165+
filter, errs := workspaceSearchQuery(queryStr)
166+
if len(errs) > 0 {
167+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
168+
Message: "Invalid audit search query.",
169+
Validations: errs,
170+
})
171+
return
172+
}
173+
174+
if filter.OwnerUsername == "me" {
175+
filter.OwnerID = apiKey.UserID
176+
filter.OwnerUsername = ""
177+
}
178+
179+
sqlFilter, err := api.HTTPAuth.AuthorizeSQLFilter(r, rbac.ActionRead, rbac.ResourceWorkspace.Type)
180+
if err != nil {
181+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
182+
Message: "Internal error preparing sql filter.",
183+
Detail: err.Error(),
184+
})
185+
return
186+
}
187+
188+
count, err := api.Database.GetWorkspaceCount(ctx, filter, sqlFilter)
189+
if err != nil {
190+
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
191+
Message: "Internal error fetching workspace count.",
192+
Detail: err.Error(),
193+
})
194+
return
195+
}
196+
197+
httpapi.Write(ctx, rw, http.StatusOK, codersdk.WorkspaceCountResponse{
198+
Count: count,
199+
})
200+
}
201+
160202
func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request) {
161203
ctx := r.Context()
162204
owner := httpmw.UserParam(r)

codersdk/workspaces.go

+12
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ type Workspace struct {
3131
LastUsedAt time.Time `json:"last_used_at"`
3232
}
3333

34+
type WorkspacesRequest struct {
35+
SearchQuery string `json:"q,omitempty"`
36+
Pagination
37+
}
38+
39+
type WorkspaceCountRequest struct {
40+
SearchQuery string `json:"q,omitempty"`
41+
}
42+
type WorkspaceCountResponse struct {
43+
Count int64 `json:"count"`
44+
}
45+
3446
// CreateWorkspaceBuildRequest provides options to update the latest workspace build.
3547
type CreateWorkspaceBuildRequest struct {
3648
TemplateVersionID uuid.UUID `json:"template_version_id,omitempty"`

site/src/api/api.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ export const getURLWithSearchParams = (
279279
}
280280

281281
export const getWorkspaces = async (
282-
options: TypesGen.AuditLogsRequest,
282+
options: TypesGen.WorkspacesRequest,
283283
): Promise<TypesGen.Workspace[]> => {
284284
const searchParams = new URLSearchParams()
285285
if (options.limit) {
@@ -296,10 +296,9 @@ export const getWorkspaces = async (
296296
return response.data
297297
}
298298

299-
// TODO change types
300299
export const getWorkspacesCount = async (
301-
options: TypesGen.AuditLogCountRequest = {},
302-
): Promise<TypesGen.AuditLogCountResponse> => {
300+
options: TypesGen.WorkspaceCountRequest,
301+
): Promise<TypesGen.WorkspaceCountResponse> => {
303302
const searchParams = new URLSearchParams()
304303
if (options.q) {
305304
searchParams.set("q", options.q)

site/src/api/typesGenerated.ts

+15
Original file line numberDiff line numberDiff line change
@@ -814,6 +814,16 @@ export interface WorkspaceBuildsRequest extends Pagination {
814814
readonly Since: string
815815
}
816816

817+
// From codersdk/workspaces.go
818+
export interface WorkspaceCountRequest {
819+
readonly q?: string
820+
}
821+
822+
// From codersdk/workspaces.go
823+
export interface WorkspaceCountResponse {
824+
readonly count: number
825+
}
826+
817827
// From codersdk/workspaces.go
818828
export interface WorkspaceFilter {
819829
readonly q?: string
@@ -851,6 +861,11 @@ export interface WorkspaceResourceMetadata {
851861
readonly sensitive: boolean
852862
}
853863

864+
// From codersdk/workspaces.go
865+
export interface WorkspacesRequest extends Pagination {
866+
readonly q?: string
867+
}
868+
854869
// From codersdk/audit.go
855870
export type AuditAction = "create" | "delete" | "write"
856871

0 commit comments

Comments
 (0)