Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit67333b6

Browse files
authored
feat: getWorkspaces filter site api (#1564)
1 parent0438430 commit67333b6

File tree

5 files changed

+41
-10
lines changed

5 files changed

+41
-10
lines changed

‎coderd/workspaces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func (api *api) workspaces(rw http.ResponseWriter, r *http.Request) {
151151

152152
// Empty strings mean no filter
153153
orgFilter:=r.URL.Query().Get("organization_id")
154-
ownerFilter:=r.URL.Query().Get("owner_id")
154+
ownerFilter:=r.URL.Query().Get("owner")
155155

156156
filter:= database.GetWorkspacesWithFilterParams{Deleted:false}
157157
iforgFilter!="" {

‎codersdk/workspaces.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func (f WorkspaceFilter) asRequestOption() requestOption {
194194
q.Set("organization_id",f.OrganizationID.String())
195195
}
196196
iff.Owner!="" {
197-
q.Set("owner_id",f.Owner)
197+
q.Set("owner",f.Owner)
198198
}
199199
r.URL.RawQuery=q.Encode()
200200
}

‎site/src/api/api.test.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
importaxiosfrom"axios"
2-
import{getApiKey,login,logout}from"./api"
2+
import{getApiKey,getWorkspacesURL,login,logout}from"./api"
33
import*asTypesGenfrom"./typesGenerated"
44

55
describe("api.ts",()=>{
@@ -113,4 +113,17 @@ describe("api.ts", () => {
113113
}
114114
})
115115
})
116+
117+
describe("getWorkspacesURL",()=>{
118+
it.each<[TypesGen.WorkspaceFilter|undefined,string]>([
119+
[undefined,"/api/v2/workspaces"],
120+
121+
[{OrganizationID:"1",Owner:""},"/api/v2/workspaces?organization_id=1"],
122+
[{OrganizationID:"",Owner:"1"},"/api/v2/workspaces?owner=1"],
123+
124+
[{OrganizationID:"1",Owner:"me"},"/api/v2/workspaces?organization_id=1&owner=me"],
125+
])(`getWorkspacesURL(%p) returns %p`,(filter,expected)=>{
126+
expect(getWorkspacesURL(filter)).toBe(expected)
127+
})
128+
})
116129
})

‎site/src/api/api.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,25 @@ export const getWorkspace = async (workspaceId: string): Promise<TypesGen.Worksp
120120
returnresponse.data
121121
}
122122

123-
// TODO:@emyrk add query params as arguments. Supports 'organization_id' and 'owner'
124-
// 'owner' can be a username, user_id, or 'me'
125-
exportconstgetWorkspaces=async():Promise<TypesGen.Workspace[]>=>{
126-
constresponse=awaitaxios.get<TypesGen.Workspace[]>(`/api/v2/workspaces`)
123+
exportconstgetWorkspacesURL=(filter?:TypesGen.WorkspaceFilter):string=>{
124+
constbasePath="/api/v2/workspaces"
125+
constsearchParams=newURLSearchParams()
126+
127+
if(filter?.OrganizationID){
128+
searchParams.append("organization_id",filter.OrganizationID)
129+
}
130+
if(filter?.Owner){
131+
searchParams.append("owner",filter.Owner)
132+
}
133+
134+
constsearchString=searchParams.toString()
135+
136+
returnsearchString ?`${basePath}?${searchString}` :basePath
137+
}
138+
139+
exportconstgetWorkspaces=async(filter?:TypesGen.WorkspaceFilter):Promise<TypesGen.Workspace[]>=>{
140+
consturl=getWorkspacesURL(filter)
141+
constresponse=awaitaxios.get<TypesGen.Workspace[]>(url)
127142
returnresponse.data
128143
}
129144

‎site/src/testHelpers/handlers.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ export const handlers = [
3636
rest.post("/api/v2/users/me/workspaces",async(req,res,ctx)=>{
3737
returnres(ctx.status(200),ctx.json(M.MockWorkspace))
3838
}),
39-
rest.get("/api/v2/workspaces",async(req,res,ctx)=>{
40-
returnres(ctx.status(200),ctx.json([M.MockWorkspace]))
41-
}),
4239
rest.get("/api/v2/users/me/organizations",(req,res,ctx)=>{
4340
returnres(ctx.status(200),ctx.json([M.MockOrganization]))
4441
}),
@@ -79,6 +76,12 @@ export const handlers = [
7976
}),
8077

8178
// workspaces
79+
80+
// REMARK: This endpoint works with query parameters, but they won't be
81+
// reflected in the return.
82+
rest.get("/api/v2/workspaces",async(req,res,ctx)=>{
83+
returnres(ctx.status(200),ctx.json([M.MockWorkspace]))
84+
}),
8285
rest.get("/api/v2/organizations/:organizationId/workspaces/:userName/:workspaceName",(req,res,ctx)=>{
8386
if(req.params.workspaceName!==M.MockWorkspace.name){
8487
returnres(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp