Files
AOS/src/app/api/aos/seed/route.ts
T

51 lines
1.7 KiB
TypeScript

import { NextResponse } from 'next/server'
import { exec } from 'child_process'
import { promisify } from 'util'
const execAsync = promisify(exec)
export const dynamic = 'force-dynamic'
export const maxDuration = 60
// POST /api/aos/seed — reseed the database (destructive, dev only)
export async function POST() {
if (process.env.NODE_ENV === 'production') {
return NextResponse.json({ error: 'not in production' }, { status: 403 })
}
try {
// wipe via prisma (SQLite TRUNCATE not supported, use deleteMany per model in order)
const { db } = await import('@/lib/db')
await db.dunningRun.deleteMany()
await db.vatReturn.deleteMany()
await db.bankTransaction.deleteMany()
await db.estimateLine.deleteMany()
await db.estimate.deleteMany()
await db.ticketMessage.deleteMany()
await db.ticket.deleteMany()
await db.expense.deleteMany()
await db.contract.deleteMany()
await db.invoiceLine.deleteMany()
await db.invoice.deleteMany()
await db.asset.deleteMany()
await db.licenseActivation.deleteMany()
await db.license.deleteMany()
await db.timeEntry.deleteMany()
await db.task.deleteMany()
await db.project.deleteMany()
await db.lead.deleteMany()
await db.deal.deleteMany()
await db.person.deleteMany()
await db.company.deleteMany()
await db.auditLog.deleteMany()
await db.setting.deleteMany()
await db.module.deleteMany()
await db.user.deleteMany()
await execAsync('bun run src/lib/seed.ts', { cwd: process.cwd() })
return NextResponse.json({ ok: true })
} catch (err) {
const msg = err instanceof Error ? err.message : 'seed failed'
return NextResponse.json({ error: msg }, { status: 500 })
}
}