34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
// server/api/admin/village/reset.post.ts
|
|
import { getUserIdFromSession } from '../../../utils/auth';
|
|
import { generateVillageForUser } from '../../../services/villageService';
|
|
import { PrismaClient } from '@prisma/client';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const userId = await getUserIdFromSession(event);
|
|
|
|
// Simple admin check
|
|
if (userId !== 1) {
|
|
throw createError({ statusCode: 403, statusMessage: 'Forbidden' });
|
|
}
|
|
|
|
const user = await prisma.user.findUniqueOrThrow({ where: { id: userId } });
|
|
const village = await prisma.village.findUnique({ where: { userId } });
|
|
|
|
if (village) {
|
|
await prisma.$transaction([
|
|
// Note: Order matters due to foreign key constraints.
|
|
// Delete objects first, then tiles.
|
|
prisma.villageObject.deleteMany({ where: { villageId: village.id } }),
|
|
prisma.villageTile.deleteMany({ where: { villageId: village.id } }),
|
|
prisma.village.delete({ where: { id: village.id } }),
|
|
]);
|
|
}
|
|
|
|
// Generate a fresh village
|
|
await generateVillageForUser(user);
|
|
|
|
return { success: true, message: 'Village has been reset.' };
|
|
});
|