habits.andr33v.ru/server/api/user/visit.post.ts

32 lines
1.2 KiB
TypeScript

import { getAuthenticatedUserId } from '../../utils/auth';
import prisma from '../../utils/prisma';
import { calculateDailyStreak } from '../../utils/streak';
export default defineEventHandler(async (event) => {
const userId = getAuthenticatedUserId(event);
const body = await readBody(event);
const gameDay: string = body.gameDay; // Expecting "YYYY-MM-DD"
if (!gameDay || !/^\d{4}-\d{2}-\d{2}$/.test(gameDay)) {
throw createError({ statusCode: 400, statusMessage: 'Invalid or missing gameDay property in request body. Expected YYYY-MM-DD.' });
}
// Calculate the streak and create today's visit record
const updatedUser = await calculateDailyStreak(prisma, userId, gameDay);
// The consumer of this endpoint needs the most up-to-date user info,
// including the newly calculated streak.
return {
id: updatedUser.id,
email: updatedUser.email,
nickname: updatedUser.nickname,
avatar: updatedUser.avatar,
coins: updatedUser.coins,
exp: updatedUser.exp,
dailyStreak: updatedUser.dailyStreak,
soundOn: updatedUser.soundOn,
confettiOn: updatedUser.confettiOn,
createdAt: updatedUser.createdAt,
updatedAt: updatedUser.updatedAt,
}
});