create: add file for assessment queries
This commit is contained in:
parent
0f0f974c5e
commit
6e52f5dab2
|
|
@ -0,0 +1,120 @@
|
|||
import client from "@/honoClient";
|
||||
import fetchRPC from "@/utils/fetchRPC";
|
||||
import { queryOptions } from "@tanstack/react-query";
|
||||
import { InferRequestType } from "hono";
|
||||
|
||||
// Query untuk mendapatkan skor assessment saat ini
|
||||
export const getCurrentAssessmentScoreQueryOptions = (assessmentId: string) =>
|
||||
queryOptions({
|
||||
queryKey: ["assessment", { assessmentId }],
|
||||
queryFn: () =>
|
||||
fetchRPC(
|
||||
client.assessments.getCurrentAssessmentScore.$get({
|
||||
query: {
|
||||
assessmentId,
|
||||
},
|
||||
})
|
||||
),
|
||||
});
|
||||
|
||||
export const fetchAspects = async () => {
|
||||
return await fetchRPC(
|
||||
client.assessments.aspect.$get({
|
||||
query: {}
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
// Query untuk mendapatkan semua pertanyaan berdasarkan halaman dan limit
|
||||
export const getQuestionsAllQueryOptions = (page: number, limit: number, q?: string) =>
|
||||
queryOptions({
|
||||
queryKey: ["assessment", { page, limit, q }],
|
||||
queryFn: () =>
|
||||
fetchRPC(
|
||||
client.assessments.getAllQuestions.$get({
|
||||
query: {
|
||||
limit: String(limit),
|
||||
page: String(page),
|
||||
q: q || "",
|
||||
},
|
||||
})
|
||||
),
|
||||
});
|
||||
|
||||
// Query untuk mendapatkan jawaban berdasarkan assessment ID
|
||||
export const getAnswersQueryOptions = (assessmentId: string, page: number, limit: number, q?: string) =>
|
||||
queryOptions({
|
||||
queryKey: ["assessment", { assessmentId, page, limit, q }],
|
||||
queryFn: () =>
|
||||
fetchRPC(
|
||||
client.assessments.getAnswers.$get({
|
||||
query: {
|
||||
assessmentId,
|
||||
limit: String(limit),
|
||||
page: String(page),
|
||||
q: q || "",
|
||||
},
|
||||
})
|
||||
),
|
||||
});
|
||||
|
||||
// Query untuk toggle flag jawaban berdasarkan questionId
|
||||
export const toggleFlagAnswer = async (questionId: string) => {
|
||||
return await fetchRPC(
|
||||
client.assessments[":questionId"].toggleFlag.$patch({
|
||||
param: { questionId }
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
// Opsional: Jika Anda ingin menggunakan react-query untuk toggleFlag
|
||||
export const toggleFlagAnswerMutationOptions = (questionId: string) => ({
|
||||
mutationFn: () => toggleFlagAnswer(questionId),
|
||||
});
|
||||
|
||||
// Di file queries (sesuaikan tipe yang diperlukan untuk submitAnswer)
|
||||
export const submitAnswer = async (
|
||||
form: {
|
||||
optionId: string;
|
||||
assessmentId: string;
|
||||
validationInformation: string;
|
||||
}
|
||||
) => {
|
||||
return await fetchRPC(
|
||||
client.assessments.submitAnswer.$post({
|
||||
json: form,
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
// Opsional: Jika Anda ingin menggunakan react-query untuk submitAnswer
|
||||
export const submitAnswerMutationOptions = () => ({
|
||||
mutationFn: submitAnswer,
|
||||
});
|
||||
|
||||
// Query untuk mendapatkan rata-rata skor berdasarkan aspectId dan assessmentId
|
||||
export const getAverageScoreQueryOptions = (assessmentId: string) =>
|
||||
queryOptions({
|
||||
queryKey: ["averageScore", { assessmentId }],
|
||||
queryFn: () =>
|
||||
fetchRPC(
|
||||
client.assessments["average-score"].aspects.assessments[":assessmentId"].$get({
|
||||
param: {
|
||||
assessmentId,
|
||||
},
|
||||
})
|
||||
),
|
||||
});
|
||||
|
||||
export const getAverageScoreSubAspectQueryOptions = (assessmentId: string) =>
|
||||
queryOptions({
|
||||
queryKey: ["averageScoreSubAspects", { assessmentId }],
|
||||
queryFn: () =>
|
||||
fetchRPC(
|
||||
client.assessments["average-score"]["sub-aspects"].assessments[":assessmentId"].$get({
|
||||
param: {
|
||||
assessmentId,
|
||||
},
|
||||
})
|
||||
),
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user