diff --git a/app/api/curator-comment/route.ts b/app/api/curator-comment/route.ts index 74fd077..9bc9a47 100644 --- a/app/api/curator-comment/route.ts +++ b/app/api/curator-comment/route.ts @@ -96,21 +96,35 @@ export async function POST(request: NextRequest) { // Determine responsible curators const finalGenreId = genreId !== null && genreId !== undefined ? Number(genreId) : puzzle.genreId; + const specialId = puzzle.specialId; let curatorIds: number[] = []; + const allCuratorIds = new Set(); - if (finalGenreId === null) { - // Global puzzle: Get all global curators - const globalCurators = await prisma.curator.findMany({ + // Get all global curators (always included) + const globalCurators = await prisma.curator.findMany({ + where: { + isGlobalCurator: true + }, + select: { + id: true + } + }); + globalCurators.forEach(gc => allCuratorIds.add(gc.id)); + + // Check for special puzzle first (takes precedence) + if (specialId !== null) { + // Special puzzle: Get curators for this special + all global curators + const specialCurators = await prisma.curatorSpecial.findMany({ where: { - isGlobalCurator: true + specialId: specialId }, select: { - id: true + curatorId: true } }); - curatorIds = globalCurators.map(c => c.id); - } else { + specialCurators.forEach(cs => allCuratorIds.add(cs.curatorId)); + } else if (finalGenreId !== null) { // Genre puzzle: Get curators for this genre + all global curators const genreCurators = await prisma.curatorGenre.findMany({ where: { @@ -120,22 +134,11 @@ export async function POST(request: NextRequest) { curatorId: true } }); - - const globalCurators = await prisma.curator.findMany({ - where: { - isGlobalCurator: true - }, - select: { - id: true - } - }); - - // Combine and deduplicate curator IDs - const allCuratorIds = new Set(); genreCurators.forEach(cg => allCuratorIds.add(cg.curatorId)); - globalCurators.forEach(gc => allCuratorIds.add(gc.id)); - curatorIds = Array.from(allCuratorIds); } + // else: Global puzzle - only global curators (already added above) + + curatorIds = Array.from(allCuratorIds); if (curatorIds.length === 0) { return NextResponse.json( diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5da755e..40330a5 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -159,7 +159,7 @@ model CuratorComment { puzzleId Int puzzle DailyPuzzle @relation(fields: [puzzleId], references: [id], onDelete: Cascade) genreId Int? - genre Genre? @relation(fields: [genreId], references: [id]) + genre Genre? @relation(fields: [genreId], references: [id], onDelete: SetNull) message String createdAt DateTime @default(now())