mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
Add types, start writing count function
This commit is contained in:
@@ -157,6 +157,48 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
|
||||
httpapi.Write(ctx, rw, http.StatusOK, wss)
|
||||
}
|
||||
|
||||
func (api *API) workspaceCount(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
apiKey := httpmw.APIKey(r)
|
||||
|
||||
queryStr := r.URL.Query().Get("q")
|
||||
filter, errs := workspaceSearchQuery(queryStr)
|
||||
if len(errs) > 0 {
|
||||
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
|
||||
Message: "Invalid audit search query.",
|
||||
Validations: errs,
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if filter.OwnerUsername == "me" {
|
||||
filter.OwnerID = apiKey.UserID
|
||||
filter.OwnerUsername = ""
|
||||
}
|
||||
|
||||
sqlFilter, err := api.HTTPAuth.AuthorizeSQLFilter(r, rbac.ActionRead, rbac.ResourceWorkspace.Type)
|
||||
if err != nil {
|
||||
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
|
||||
Message: "Internal error preparing sql filter.",
|
||||
Detail: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
count, err := api.Database.GetWorkspaceCount(ctx, filter, sqlFilter)
|
||||
if err != nil {
|
||||
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
|
||||
Message: "Internal error fetching workspace count.",
|
||||
Detail: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
httpapi.Write(ctx, rw, http.StatusOK, codersdk.WorkspaceCountResponse{
|
||||
Count: count,
|
||||
})
|
||||
}
|
||||
|
||||
func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
owner := httpmw.UserParam(r)
|
||||
|
||||
@@ -31,6 +31,18 @@ type Workspace struct {
|
||||
LastUsedAt time.Time `json:"last_used_at"`
|
||||
}
|
||||
|
||||
type WorkspacesRequest struct {
|
||||
SearchQuery string `json:"q,omitempty"`
|
||||
Pagination
|
||||
}
|
||||
|
||||
type WorkspaceCountRequest struct {
|
||||
SearchQuery string `json:"q,omitempty"`
|
||||
}
|
||||
type WorkspaceCountResponse struct {
|
||||
Count int64 `json:"count"`
|
||||
}
|
||||
|
||||
// CreateWorkspaceBuildRequest provides options to update the latest workspace build.
|
||||
type CreateWorkspaceBuildRequest struct {
|
||||
TemplateVersionID uuid.UUID `json:"template_version_id,omitempty"`
|
||||
|
||||
+3
-4
@@ -279,7 +279,7 @@ export const getURLWithSearchParams = (
|
||||
}
|
||||
|
||||
export const getWorkspaces = async (
|
||||
options: TypesGen.AuditLogsRequest,
|
||||
options: TypesGen.WorkspacesRequest,
|
||||
): Promise<TypesGen.Workspace[]> => {
|
||||
const searchParams = new URLSearchParams()
|
||||
if (options.limit) {
|
||||
@@ -296,10 +296,9 @@ export const getWorkspaces = async (
|
||||
return response.data
|
||||
}
|
||||
|
||||
// TODO change types
|
||||
export const getWorkspacesCount = async (
|
||||
options: TypesGen.AuditLogCountRequest = {},
|
||||
): Promise<TypesGen.AuditLogCountResponse> => {
|
||||
options: TypesGen.WorkspaceCountRequest,
|
||||
): Promise<TypesGen.WorkspaceCountResponse> => {
|
||||
const searchParams = new URLSearchParams()
|
||||
if (options.q) {
|
||||
searchParams.set("q", options.q)
|
||||
|
||||
@@ -814,6 +814,16 @@ export interface WorkspaceBuildsRequest extends Pagination {
|
||||
readonly Since: string
|
||||
}
|
||||
|
||||
// From codersdk/workspaces.go
|
||||
export interface WorkspaceCountRequest {
|
||||
readonly q?: string
|
||||
}
|
||||
|
||||
// From codersdk/workspaces.go
|
||||
export interface WorkspaceCountResponse {
|
||||
readonly count: number
|
||||
}
|
||||
|
||||
// From codersdk/workspaces.go
|
||||
export interface WorkspaceFilter {
|
||||
readonly q?: string
|
||||
@@ -851,6 +861,11 @@ export interface WorkspaceResourceMetadata {
|
||||
readonly sensitive: boolean
|
||||
}
|
||||
|
||||
// From codersdk/workspaces.go
|
||||
export interface WorkspacesRequest extends Pagination {
|
||||
readonly q?: string
|
||||
}
|
||||
|
||||
// From codersdk/audit.go
|
||||
export type AuditAction = "create" | "delete" | "write"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user