11import { NextResponse } from "next/server" ;
22import { prisma } from "@/lib/prisma" ;
33import { requireAdmin , adminGuardResponse } from "@/lib/adminAuth" ;
4+ import { getAdminUtorids } from "@/lib/adminWhitelist" ;
45
56export async function DELETE ( ) {
67 try {
78 const user = await requireAdmin ( ) ;
89 const guard = adminGuardResponse ( user ) ;
910 if ( guard ) return guard ;
1011
12+ const adminUtorids = getAdminUtorids ( ) ;
13+ const protectedUsers = await prisma . user . findMany ( {
14+ where : { OR : [ { utorid : { in : adminUtorids } } , { role : "PROFESSOR" } ] } ,
15+ select : { id : true } ,
16+ } ) ;
17+ const protectedIds = protectedUsers . map ( ( u ) => u . id ) ;
18+
1119 await prisma . $transaction ( [
1220 prisma . answerUpvote . deleteMany ( ) ,
1321 prisma . questionUpvote . deleteMany ( ) ,
@@ -17,7 +25,9 @@ export async function DELETE() {
1725 prisma . session . deleteMany ( ) ,
1826 prisma . courseEnrollment . deleteMany ( ) ,
1927 prisma . course . deleteMany ( ) ,
20- prisma . user . deleteMany ( ) ,
28+ prisma . user . deleteMany (
29+ protectedIds . length > 0 ? { where : { id : { notIn : protectedIds } } } : undefined
30+ ) ,
2131 ] ) ;
2232
2333 return NextResponse . json ( { success : true } ) ;
0 commit comments