import { api as client } from "../auth/http"; import type { CreateFileUploadFieldDto, CreateFileUploadSettingDto, FileUploadField, FileUploadSetting, UpdateFileUploadFieldDto, UpdateFileUploadSettingDto, } from "@/types/fileUploadSettings"; import { ApiResponse } from "@/types/apiResponse"; import { unwrap } from "@/utils/endpoint"; const BASE = "/file-upload-settings"; // function unwrap(payload: Envelope): T { // if ( // payload && // typeof payload === "object" && // "data" in (payload as object) // ) { // return (payload as { data: T }).data; // } // return payload as T; // } export const fileUploadSettingsService = { // GET /file-upload-settings list: async (): Promise => { const response = await client.get>(BASE); return unwrap(response.data); }, // GET /file-upload-settings/:id getById: async (id: string): Promise => { const response = await client.get>( `${BASE}/${id}`, ); return unwrap(response.data); }, // GET /file-upload-settings/by-code/:code getByCode: async (code: string): Promise => { const response = await client.get>( `${BASE}/by-code/${encodeURIComponent(code)}`, ); return unwrap(response.data); }, // POST /file-upload-settings create: async ( payload: CreateFileUploadSettingDto, ): Promise => { const response = await client.post>( BASE, payload, ); return unwrap(response.data); }, // PATCH /file-upload-settings/:id update: async ( id: string, payload: UpdateFileUploadSettingDto, ): Promise => { const response = await client.patch>( `${BASE}/${id}`, payload, ); return unwrap(response.data); }, // DELETE /file-upload-settings/:id remove: async (id: string): Promise => { await client.delete(`${BASE}/${id}`); }, // PUT /file-upload-settings/:id/fields replaceFields: async ( id: string, fields: CreateFileUploadFieldDto[], ): Promise => { const response = await client.put>( `${BASE}/${id}/fields`, fields, ); return unwrap(response.data); }, // POST /file-upload-settings/:id/fields addField: async ( id: string, payload: CreateFileUploadFieldDto, ): Promise => { const response = await client.post>( `${BASE}/${id}/fields`, payload, ); return unwrap(response.data); }, // PATCH /file-upload-settings/fields/:fieldId updateField: async ( fieldId: string, payload: UpdateFileUploadFieldDto, ): Promise => { const response = await client.patch>( `${BASE}/fields/${fieldId}`, payload, ); return unwrap(response.data); }, // DELETE /file-upload-settings/fields/:fieldId removeField: async (fieldId: string): Promise => { await client.delete(`${BASE}/fields/${fieldId}`); }, };