import { makeRequest } from "@frontend/kitui"; import { CreateQuestionRequest } from "model/question/create"; import { RawQuestion } from "model/question/question"; import { GetQuestionListRequest, GetQuestionListResponse } from "model/question/getList"; import { EditQuestionRequest, EditQuestionResponse } from "model/question/edit"; import { DeleteQuestionRequest, DeleteQuestionResponse } from "model/question/delete"; import { CopyQuestionRequest, CopyQuestionResponse } from "model/question/copy"; const baseUrl = process.env.NODE_ENV === "production" ? "/squiz" : "https://squiz.pena.digital/squiz"; function createQuestion(body?: Partial) { return makeRequest({ url: `${baseUrl}/question/create`, body: { ...defaultCreateQuestionBody, ...body }, method: "POST", }); } async function getQuestionList(body?: Partial) { if (!body?.quiz_id) return null; const response = await makeRequest({ url: `${baseUrl}/question/getList`, body: { ...defaultGetQuestionListBody, ...body }, method: "POST", }); return response.items; } function editQuestion(body: EditQuestionRequest, signal?: AbortSignal) { return makeRequest({ url: `${baseUrl}/question/edit`, body, method: "PATCH", signal, }); } function copyQuestion(copyQuestionBody: CopyQuestionRequest) { return makeRequest({ url: `${baseUrl}/question/copy`, body: copyQuestionBody, method: "POST", }); } function deleteQuestion(id: number) { return makeRequest({ url: `${baseUrl}/question/delete`, body: { id }, method: "DELETE", }); } export const questionApi = { create: createQuestion, getList: getQuestionList, edit: editQuestion, copy: copyQuestion, delete: deleteQuestion, }; const defaultCreateQuestionBody: CreateQuestionRequest = { "quiz_id": 0, "title": "string", "description": "string", "type": "variant", "required": true, "page": 0, "content": "string", }; const defaultGetQuestionListBody: GetQuestionListRequest = { "limit": 0, "offset": 0, "from": 0, "to": 0, "search": "string", "type": "string", "deleted": true, "required": true, };