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

Skip to content

Commit 142ad4e

Browse files
committed
feat: added include_deleted
relates to #1955
1 parent b65259f commit 142ad4e

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

coderd/workspaces.go

+27
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,37 @@ func (api *API) workspaceByOwnerAndName(rw http.ResponseWriter, r *http.Request)
165165
owner := httpmw.UserParam(r)
166166
workspaceName := chi.URLParam(r, "workspacename")
167167

168+
var (
169+
includeDeletedStr = r.URL.Query().Get("include_deleted")
170+
includeDeleted = false
171+
)
172+
if includeDeletedStr != "" {
173+
var err error
174+
includeDeleted, err = strconv.ParseBool(includeDeletedStr)
175+
if err != nil {
176+
httpapi.Write(rw, http.StatusBadRequest, httpapi.Response{
177+
Message: fmt.Sprintf("Invalid boolean value %q for \"include_deleted\" query param.", includeDeletedStr),
178+
Validations: []httpapi.Error{
179+
{Field: "include_deleted", Detail: "Must be a valid boolean"},
180+
},
181+
})
182+
return
183+
}
184+
}
185+
168186
workspace, err := api.Database.GetWorkspaceByOwnerIDAndName(r.Context(), database.GetWorkspaceByOwnerIDAndNameParams{
169187
OwnerID: owner.ID,
170188
Name: workspaceName,
171189
})
190+
191+
if includeDeleted && errors.Is(err, sql.ErrNoRows) {
192+
workspace, err = api.Database.GetWorkspaceByOwnerIDAndName(r.Context(), database.GetWorkspaceByOwnerIDAndNameParams{
193+
OwnerID: owner.ID,
194+
Name: workspaceName,
195+
Deleted: includeDeleted,
196+
})
197+
}
198+
172199
if errors.Is(err, sql.ErrNoRows) {
173200
// Do not leak information if the workspace exists or not
174201
httpapi.Forbidden(rw)

0 commit comments

Comments
 (0)