import { NextResponse } from 'next/server'; import { PrismaClient } from '@prisma/client'; const prisma = new PrismaClient(); /** * POST /api/player-id/suggest * * Tries to find a player ID based on recently updated states for a genre. * This helps synchronize player IDs across different domains (hoerdle.de and hördle.de). * * Request body: * - genreKey: Genre key (e.g., "global", "Rock", "special:00725") * * Returns: * - playerId: Suggested player ID (UUID) if found, null otherwise */ export async function POST(request: Request) { try { const body = await request.json(); const { genreKey } = body; if (!genreKey || typeof genreKey !== 'string') { return NextResponse.json( { error: 'Missing or invalid genreKey' }, { status: 400 } ); } // Find the most recently updated player state for this genre // Look for states updated in the last 48 hours const cutoffDate = new Date(); cutoffDate.setHours(cutoffDate.getHours() - 48); const recentState = await prisma.playerState.findFirst({ where: { genreKey: genreKey, lastPlayed: { gte: cutoffDate, }, }, orderBy: { lastPlayed: 'desc', }, }); if (recentState) { // Return the player ID from the most recent state return NextResponse.json({ playerId: recentState.identifier, lastPlayed: recentState.lastPlayed, }); } // No recent state found return NextResponse.json({ playerId: null, }); } catch (error) { console.error('[player-id/suggest] Error finding player ID:', error); return NextResponse.json( { error: 'Internal Server Error' }, { status: 500 } ); } }