import { makeRequest } from "@frontend/kitui"; import { parseAxiosError } from "@utils/parse-error"; const API_URL = `${process.env.REACT_APP_DOMAIN}/squiz`; // Types export interface AuditoryItem { id: number; quiz_id: number; sex: number; // 0 - женский, 1 - мужской, 2 - оба age: string; deleted: boolean; created_at: number; } export interface AuditoryResponse { ID: number; quiz_id: number; sex: number; age: string; deleted: boolean; created_at: number; } // Request Types export interface AuditoryGetRequest { quizId: number; } export interface AuditoryDeleteRequest { id: number; } export interface AuditoryAddRequest { sex: number; age: string; } // Parameters export interface AuditoryGetParams { quizId: number; } export interface AuditoryDeleteParams { quizId: number; auditoryId: number; } export interface AuditoryAddParams { quizId: number; body: AuditoryAddRequest; } // API calls export const auditoryGet = async ({ quizId }: AuditoryGetParams): Promise<[AuditoryItem[] | null, string?]> => { if (!quizId) { return [null, "Quiz ID is required"]; } try { const response = await makeRequest({ url: `${API_URL}/quiz/${quizId}/auditory`, method: "GET", }); return [response]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Не удалось получить аудиторию. ${error}`]; } }; export const auditoryDelete = async ({ quizId, auditoryId }: AuditoryDeleteParams): Promise<[AuditoryResponse | null, string?]> => { if (!quizId || !auditoryId) { return [null, "Quiz ID and Auditory ID are required"]; } try { const response = await makeRequest({ url: `${API_URL}/quiz/${quizId}/auditory/${auditoryId}`, method: "DELETE", }); return [response]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Не удалось удалить аудиторию. ${error}`]; } }; export const auditoryAdd = async ({ quizId, body }: AuditoryAddParams): Promise<[AuditoryResponse | null, string?]> => { if (!quizId) { return [null, "Quiz ID is required"]; } try { const response = await makeRequest({ url: `${API_URL}/quiz/${quizId}/auditory`, body, method: "POST", }); return [response]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Не удалось добавить аудиторию. ${error}`]; } };