habits.andr33v.ru/server/api/admin/village/reset.post.ts

34 lines
1.1 KiB
TypeScript

// server/api/admin/village/reset.post.ts
import { getAuthenticatedUserId } from '../../../utils/auth';
import { generateVillageForUser } from '../../../services/villageService';
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
export default defineEventHandler(async (event) => {
const userId = getAuthenticatedUserId(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.' };
});