Pull Request branch dev-clone to main #1

Merged
gitea merged 429 commits from dev-clone into main 2024-12-23 09:31:34 +00:00
Showing only changes of commit 0bbd246235 - Show all commits

View File

@ -15,6 +15,7 @@ import checkPermission from "../../middlewares/checkPermission";
import path from "path";
import fs from 'fs';
import { notFound } from "../../errors/DashboardError";
import { answerRevisions } from "../../drizzle/schema/answerRevisions";
export const answerFormSchema = z.object({
optionId: z.string().min(1),
@ -33,6 +34,13 @@ export const optionFormSchema = z.object({
filename: z.string().optional(),
});
// newOptionFormSchema: untuk /updateOption
export const newOptionFormSchema = z.object({
newOptionId: z.string().min(1),
assessmentId: z.string().min(1),
questionId: z.string().min(1),
});
// validationFormSchema: untuk /submitValidation
export const validationFormSchema = z.object({
assessmentId: z.string().min(1),
@ -40,6 +48,13 @@ export const validationFormSchema = z.object({
validationInformation: z.string().min(1, "Validation information is required"),
});
// newValidationFormSchema: untuk /updateValidation
export const newValidationFormSchema = z.object({
assessmentId: z.string().min(1),
questionId: z.string().min(1),
newValidationInformation: z.string().min(1, "Validation information is required"),
});
export const answerUpdateSchema = answerFormSchema.partial();
// Helper untuk menyimpan file
@ -920,4 +935,48 @@ const assessmentsRoute = new Hono<HonoEnv>()
}
)
.patch(
"/updateOption",
checkPermission("assessments.submitOption"),
requestValidator("json", newOptionFormSchema),
async (c) => {
const optionData = c.req.valid("json");
// Temukan answerId yang sesuai berdasarkan assessmentId dan questionId
const [targetAnswer] = await db
.select({ id: answers.id })
.from(answers)
.leftJoin(options, eq(answers.optionId, options.id))
.where(
sql`answers."assessmentId" = ${optionData.assessmentId}
AND options."questionId" = ${optionData.questionId}`
)
.limit(1);
if (!targetAnswer) {
return c.json(
{ message: "Answer not found for given assessmentId and questionId" },
404
);
}
// Lakukan update pada answer_revisions menggunakan answerId yang ditemukan
const [updatedRevision] = await db
.update(answerRevisions)
.set({
newOptionId: optionData.newOptionId,
})
.where(sql`"answerId" = ${targetAnswer.id}`)
.returning();
return c.json(
{
message: "Revision updated successfully",
revision: updatedRevision, // Revisi yang baru saja diperbarui
},
200
);
}
)
export default assessmentsRoute;