Skip to content

Commit d7e244f

Browse files
authored
feat: show archived workspaces and restore it (#154)
* chore: update api * feat: add icon * feat: add archived workspace and restore * test: add msw for archived workspaces
1 parent c63de9e commit d7e244f

File tree

12 files changed

+572
-45
lines changed

12 files changed

+572
-45
lines changed

icons/FlipBackward.svg

+3
Loading

src/api/generated/@tanstack/react-query.gen.ts

+91
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import {
1414
v1ListActiveWorkspaces,
1515
v1ActivateWorkspace,
1616
v1DeleteWorkspace,
17+
v1ListArchivedWorkspaces,
18+
v1RecoverWorkspace,
19+
v1HardDeleteWorkspace,
1720
v1GetWorkspaceAlerts,
1821
v1GetWorkspaceMessages,
1922
v1GetWorkspaceSystemPrompt,
@@ -30,6 +33,12 @@ import type {
3033
V1DeleteWorkspaceData,
3134
V1DeleteWorkspaceError,
3235
V1DeleteWorkspaceResponse,
36+
V1RecoverWorkspaceData,
37+
V1RecoverWorkspaceError,
38+
V1RecoverWorkspaceResponse,
39+
V1HardDeleteWorkspaceData,
40+
V1HardDeleteWorkspaceError,
41+
V1HardDeleteWorkspaceResponse,
3342
V1GetWorkspaceAlertsData,
3443
V1GetWorkspaceMessagesData,
3544
V1GetWorkspaceSystemPromptData,
@@ -312,6 +321,88 @@ export const v1DeleteWorkspaceMutation = (
312321
return mutationOptions;
313322
};
314323

324+
export const v1ListArchivedWorkspacesQueryKey = (
325+
options?: OptionsLegacyParser,
326+
) => [createQueryKey("v1ListArchivedWorkspaces", options)];
327+
328+
export const v1ListArchivedWorkspacesOptions = (
329+
options?: OptionsLegacyParser,
330+
) => {
331+
return queryOptions({
332+
queryFn: async ({ queryKey, signal }) => {
333+
const { data } = await v1ListArchivedWorkspaces({
334+
...options,
335+
...queryKey[0],
336+
signal,
337+
throwOnError: true,
338+
});
339+
return data;
340+
},
341+
queryKey: v1ListArchivedWorkspacesQueryKey(options),
342+
});
343+
};
344+
345+
export const v1RecoverWorkspaceQueryKey = (
346+
options: OptionsLegacyParser<V1RecoverWorkspaceData>,
347+
) => [createQueryKey("v1RecoverWorkspace", options)];
348+
349+
export const v1RecoverWorkspaceOptions = (
350+
options: OptionsLegacyParser<V1RecoverWorkspaceData>,
351+
) => {
352+
return queryOptions({
353+
queryFn: async ({ queryKey, signal }) => {
354+
const { data } = await v1RecoverWorkspace({
355+
...options,
356+
...queryKey[0],
357+
signal,
358+
throwOnError: true,
359+
});
360+
return data;
361+
},
362+
queryKey: v1RecoverWorkspaceQueryKey(options),
363+
});
364+
};
365+
366+
export const v1RecoverWorkspaceMutation = (
367+
options?: Partial<OptionsLegacyParser<V1RecoverWorkspaceData>>,
368+
) => {
369+
const mutationOptions: UseMutationOptions<
370+
V1RecoverWorkspaceResponse,
371+
V1RecoverWorkspaceError,
372+
OptionsLegacyParser<V1RecoverWorkspaceData>
373+
> = {
374+
mutationFn: async (localOptions) => {
375+
const { data } = await v1RecoverWorkspace({
376+
...options,
377+
...localOptions,
378+
throwOnError: true,
379+
});
380+
return data;
381+
},
382+
};
383+
return mutationOptions;
384+
};
385+
386+
export const v1HardDeleteWorkspaceMutation = (
387+
options?: Partial<OptionsLegacyParser<V1HardDeleteWorkspaceData>>,
388+
) => {
389+
const mutationOptions: UseMutationOptions<
390+
V1HardDeleteWorkspaceResponse,
391+
V1HardDeleteWorkspaceError,
392+
OptionsLegacyParser<V1HardDeleteWorkspaceData>
393+
> = {
394+
mutationFn: async (localOptions) => {
395+
const { data } = await v1HardDeleteWorkspace({
396+
...options,
397+
...localOptions,
398+
throwOnError: true,
399+
});
400+
return data;
401+
},
402+
};
403+
return mutationOptions;
404+
};
405+
315406
export const v1GetWorkspaceAlertsQueryKey = (
316407
options: OptionsLegacyParser<V1GetWorkspaceAlertsData>,
317408
) => [createQueryKey("v1GetWorkspaceAlerts", options)];

src/api/generated/sdk.gen.ts

+59
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ import type {
2929
V1DeleteWorkspaceData,
3030
V1DeleteWorkspaceError,
3131
V1DeleteWorkspaceResponse,
32+
V1ListArchivedWorkspacesError,
33+
V1ListArchivedWorkspacesResponse,
34+
V1RecoverWorkspaceData,
35+
V1RecoverWorkspaceError,
36+
V1RecoverWorkspaceResponse,
37+
V1HardDeleteWorkspaceData,
38+
V1HardDeleteWorkspaceError,
39+
V1HardDeleteWorkspaceResponse,
3240
V1GetWorkspaceAlertsData,
3341
V1GetWorkspaceAlertsError,
3442
V1GetWorkspaceAlertsResponse,
@@ -219,6 +227,57 @@ export const v1DeleteWorkspace = <ThrowOnError extends boolean = false>(
219227
});
220228
};
221229

230+
/**
231+
* List Archived Workspaces
232+
* List all archived workspaces.
233+
*/
234+
export const v1ListArchivedWorkspaces = <ThrowOnError extends boolean = false>(
235+
options?: OptionsLegacyParser<unknown, ThrowOnError>,
236+
) => {
237+
return (options?.client ?? client).get<
238+
V1ListArchivedWorkspacesResponse,
239+
V1ListArchivedWorkspacesError,
240+
ThrowOnError
241+
>({
242+
...options,
243+
url: "/api/v1/workspaces/archive",
244+
});
245+
};
246+
247+
/**
248+
* Recover Workspace
249+
* Recover an archived workspace by name.
250+
*/
251+
export const v1RecoverWorkspace = <ThrowOnError extends boolean = false>(
252+
options: OptionsLegacyParser<V1RecoverWorkspaceData, ThrowOnError>,
253+
) => {
254+
return (options?.client ?? client).post<
255+
V1RecoverWorkspaceResponse,
256+
V1RecoverWorkspaceError,
257+
ThrowOnError
258+
>({
259+
...options,
260+
url: "/api/v1/workspaces/archive/{workspace_name}/recover",
261+
});
262+
};
263+
264+
/**
265+
* Hard Delete Workspace
266+
* Hard delete an archived workspace by name.
267+
*/
268+
export const v1HardDeleteWorkspace = <ThrowOnError extends boolean = false>(
269+
options: OptionsLegacyParser<V1HardDeleteWorkspaceData, ThrowOnError>,
270+
) => {
271+
return (options?.client ?? client).delete<
272+
V1HardDeleteWorkspaceResponse,
273+
V1HardDeleteWorkspaceError,
274+
ThrowOnError
275+
>({
276+
...options,
277+
url: "/api/v1/workspaces/archive/{workspace_name}",
278+
});
279+
};
280+
222281
/**
223282
* Get Workspace Alerts
224283
* Get alerts for a workspace.

src/api/generated/types.gen.ts

+27-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,9 @@ export type Conversation = {
5555
conversation_timestamp: string;
5656
};
5757

58-
export type CreateWorkspaceRequest = {
58+
export type CreateOrRenameWorkspaceRequest = {
5959
name: string;
60+
rename_to?: string | null;
6061
};
6162

6263
export type HTTPValidationError = {
@@ -119,7 +120,7 @@ export type V1ListWorkspacesResponse = ListWorkspacesResponse;
119120
export type V1ListWorkspacesError = unknown;
120121

121122
export type V1CreateWorkspaceData = {
122-
body: CreateWorkspaceRequest;
123+
body: CreateOrRenameWorkspaceRequest;
123124
};
124125

125126
export type V1CreateWorkspaceResponse = Workspace;
@@ -151,6 +152,30 @@ export type V1DeleteWorkspaceResponse = unknown;
151152

152153
export type V1DeleteWorkspaceError = HTTPValidationError;
153154

155+
export type V1ListArchivedWorkspacesResponse = ListWorkspacesResponse;
156+
157+
export type V1ListArchivedWorkspacesError = unknown;
158+
159+
export type V1RecoverWorkspaceData = {
160+
path: {
161+
workspace_name: string;
162+
};
163+
};
164+
165+
export type V1RecoverWorkspaceResponse = void;
166+
167+
export type V1RecoverWorkspaceError = HTTPValidationError;
168+
169+
export type V1HardDeleteWorkspaceData = {
170+
path: {
171+
workspace_name: string;
172+
};
173+
};
174+
175+
export type V1HardDeleteWorkspaceResponse = unknown;
176+
177+
export type V1HardDeleteWorkspaceError = HTTPValidationError;
178+
154179
export type V1GetWorkspaceAlertsData = {
155180
path: {
156181
workspace_name: string;

0 commit comments

Comments
 (0)