import { getUserIdFromSession } from '../../utils/auth'; import { calculateDailyStreak } from '../../utils/streak'; import prisma from '../../utils/prisma'; /** * Registers a user's daily visit and calculates their new streak. * This endpoint is idempotent. Calling it multiple times on the same day * will not increment the streak further. */ export default defineEventHandler(async (event) => { const userId = await getUserIdFromSession(event); // Calculate the streak and create today's visit record const updatedUser = await calculateDailyStreak(prisma, userId); // 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, } });