SurfSense/surfsense_web/lib/apis/quick-ask-actions-api.service.ts

59 lines
1.9 KiB
TypeScript

import {
type QuickAskActionCreateRequest,
type QuickAskActionUpdateRequest,
quickAskActionCreateRequest,
quickAskActionDeleteResponse,
quickAskActionRead,
quickAskActionUpdateRequest,
quickAskActionsListResponse,
} from "@/contracts/types/quick-ask-actions.types";
import { ValidationError } from "@/lib/error";
import { baseApiService } from "./base-api.service";
class QuickAskActionsApiService {
list = async (searchSpaceId?: number) => {
const params = new URLSearchParams();
if (searchSpaceId !== undefined) {
params.set("search_space_id", String(searchSpaceId));
}
const queryString = params.toString();
const url = queryString
? `/api/v1/quick-ask-actions?${queryString}`
: "/api/v1/quick-ask-actions";
return baseApiService.get(url, quickAskActionsListResponse);
};
create = async (request: QuickAskActionCreateRequest) => {
const parsed = quickAskActionCreateRequest.safeParse(request);
if (!parsed.success) {
const errorMessage = parsed.error.issues.map((issue) => issue.message).join(", ");
throw new ValidationError(`Invalid request: ${errorMessage}`);
}
return baseApiService.post("/api/v1/quick-ask-actions", quickAskActionRead, {
body: parsed.data,
});
};
update = async (actionId: number, request: QuickAskActionUpdateRequest) => {
const parsed = quickAskActionUpdateRequest.safeParse(request);
if (!parsed.success) {
const errorMessage = parsed.error.issues.map((issue) => issue.message).join(", ");
throw new ValidationError(`Invalid request: ${errorMessage}`);
}
return baseApiService.put(`/api/v1/quick-ask-actions/${actionId}`, quickAskActionRead, {
body: parsed.data,
});
};
delete = async (actionId: number) => {
return baseApiService.delete(
`/api/v1/quick-ask-actions/${actionId}`,
quickAskActionDeleteResponse
);
};
}
export const quickAskActionsApiService = new QuickAskActionsApiService();