// server/api/village/tick.post.ts import { getAuthenticatedUserId } from '~/server/utils/auth'; import { processVillageTick } from '~/server/services/villageService'; /** * This endpoint is called on every route change for an authenticated user. * It's responsible for triggering the "tick" of the village simulation, * which can include things like clearing tiles, generating resources, etc. */ export default defineEventHandler(async (event) => { try { const userId = getAuthenticatedUserId(event); // Delegate the core logic to the villageService const result = await processVillageTick(userId); // The response can be simple, or return a meaningful state if the client needs to react. // For now, a success message is sufficient. return { success: true, data: result, }; } catch (e: any) { // If getAuthenticatedUserId throws, it will be a 401 error, which should be propagated. if (e.statusCode === 401) { throw e; } console.error('Error processing village tick:', e); // For other errors, return a generic 500. throw createError({ statusCode: 500, statusMessage: 'Internal Server Error', message: 'An unexpected error occurred while processing the village tick.', }); } });