add is_public to frontend types and API service

This commit is contained in:
CREDO23 2026-03-30 19:38:00 +02:00
parent 24fd19a394
commit 16884963a4
2 changed files with 21 additions and 1 deletions

View file

@ -9,19 +9,29 @@ export const promptRead = z.object({
mode: z.enum(["transform", "explore"]),
icon: z.string().nullable(),
search_space_id: z.number().nullable(),
is_public: z.boolean(),
created_at: z.string(),
});
export type PromptRead = z.infer<typeof promptRead>;
export const publicPromptRead = promptRead.extend({
author_name: z.string().nullable(),
});
export type PublicPromptRead = z.infer<typeof publicPromptRead>;
export const promptsListResponse = z.array(promptRead);
export const publicPromptsListResponse = z.array(publicPromptRead);
export const promptCreateRequest = z.object({
name: z.string().min(1).max(200),
prompt: z.string().min(1),
mode: z.enum(["transform", "explore"]),
icon: z.string().max(50).nullable().optional(),
search_space_id: z.number().nullable().optional(),
is_public: z.boolean().optional(),
});
export type PromptCreateRequest = z.infer<typeof promptCreateRequest>;
@ -31,6 +41,7 @@ export const promptUpdateRequest = z.object({
prompt: z.string().min(1).optional(),
mode: z.enum(["transform", "explore"]).optional(),
icon: z.string().max(50).nullable().optional(),
is_public: z.boolean().optional(),
});
export type PromptUpdateRequest = z.infer<typeof promptUpdateRequest>;

View file

@ -4,8 +4,9 @@ import {
promptCreateRequest,
promptDeleteResponse,
promptRead,
promptUpdateRequest,
promptsListResponse,
promptUpdateRequest,
publicPromptsListResponse,
} from "@/contracts/types/prompts.types";
import { ValidationError } from "@/lib/error";
import { baseApiService } from "./base-api.service";
@ -49,6 +50,14 @@ class PromptsApiService {
delete = async (promptId: number) => {
return baseApiService.delete(`/api/v1/prompts/${promptId}`, promptDeleteResponse);
};
listPublic = async () => {
return baseApiService.get("/api/v1/prompts/public", publicPromptsListResponse);
};
copy = async (promptId: number) => {
return baseApiService.post(`/api/v1/prompts/${promptId}/copy`, promptRead, {});
};
}
export const promptsApiService = new PromptsApiService();