28 lines
968 B
TypeScript
28 lines
968 B
TypeScript
// quiz-up.ts
|
|
import { define } from "../../utils.ts";
|
|
import { upsertKvQuizAny } from "../../utils/QuizDataClient.ts";
|
|
import { KvObj, QuizConfig } from "../../utils/types.ts";
|
|
import { normalizeQuizMedia } from "../../utils/normalizeQuestionMedia.ts";
|
|
|
|
export const handler = define.handlers({
|
|
async POST(ctx) {
|
|
const req = ctx.req;
|
|
try {
|
|
const data = await req.text(); // Read the request body as text
|
|
const quizData: KvObj<QuizConfig> = JSON.parse(data) as KvObj<QuizConfig>; // Parse as JSON
|
|
|
|
// Normalize media URLs before saving (awaited properly)
|
|
// if (quizData.value?.questions) {
|
|
// await normalizeQuizMedia(quizData.value.questions);
|
|
// }
|
|
|
|
const response = await upsertKvQuizAny(quizData);
|
|
|
|
return new Response(JSON.stringify(response), { status: 201 }); // Created
|
|
} catch (err) {
|
|
console.error(err);
|
|
return new Response("Failed to create quiz", { status: 500 });
|
|
}
|
|
},
|
|
});
|