43 lines
974 B
TypeScript
43 lines
974 B
TypeScript
import { createUrgeLog } from "../../db/urge";
|
|
import { addStreakEvent } from "../../db/streak";
|
|
|
|
type Emotion = "stress" | "sadness" | "anger" | "empty" | "boredom" | "other";
|
|
const VALID_EMOTIONS: Emotion[] = [
|
|
"stress",
|
|
"sadness",
|
|
"anger",
|
|
"empty",
|
|
"boredom",
|
|
"other",
|
|
];
|
|
|
|
/** POST /api/urge */
|
|
export default defineEventHandler(async (event) => {
|
|
const user = await requireUser(event);
|
|
const body = await readBody(event);
|
|
const { emotion, wasOvercome, breathingDone } = body ?? {};
|
|
|
|
if (!VALID_EMOTIONS.includes(emotion)) {
|
|
throw createError({ statusCode: 400, message: "Ungültige Emotion" });
|
|
}
|
|
|
|
const log = await createUrgeLog(
|
|
user.id,
|
|
emotion,
|
|
!!wasOvercome,
|
|
!!breathingDone,
|
|
);
|
|
|
|
// StreakEvent loggen
|
|
if (wasOvercome) {
|
|
await addStreakEvent(user.id, "milestone", {
|
|
type: "urge_overcome",
|
|
emotion,
|
|
});
|
|
} else {
|
|
await addStreakEvent(user.id, "relapse", { emotion });
|
|
}
|
|
|
|
return log;
|
|
});
|