Full Next.js 15 platform with tRPC, Prisma, PostgreSQL, NextAuth. Includes production Dockerfile (multi-stage, port 7600), docker-compose with registry-based image pull, Gitea Actions CI workflow, nginx config for portal.monaco-opc.com, deployment scripts, and DEPLOYMENT.md guide. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import { PrismaClient } from '@prisma/client'
|
|
|
|
const prisma = new PrismaClient()
|
|
|
|
async function cleanup() {
|
|
console.log('Cleaning up dummy data...\n')
|
|
|
|
// Find and delete the dummy round
|
|
const dummyRound = await prisma.round.findFirst({
|
|
where: { slug: 'round-1-2026' },
|
|
include: { projects: true }
|
|
})
|
|
|
|
if (dummyRound) {
|
|
console.log(`Found dummy round: ${dummyRound.name}`)
|
|
console.log(`Projects in round: ${dummyRound.projects.length}`)
|
|
|
|
// Get project IDs to delete
|
|
const projectIds = dummyRound.projects.map(p => p.id)
|
|
|
|
// Delete team members for these projects
|
|
if (projectIds.length > 0) {
|
|
const teamDeleted = await prisma.teamMember.deleteMany({
|
|
where: { projectId: { in: projectIds } }
|
|
})
|
|
console.log(`Deleted ${teamDeleted.count} team members`)
|
|
|
|
// Disconnect projects from round first
|
|
await prisma.round.update({
|
|
where: { id: dummyRound.id },
|
|
data: { projects: { disconnect: projectIds.map(id => ({ id })) } }
|
|
})
|
|
|
|
// Delete the projects
|
|
const projDeleted = await prisma.project.deleteMany({
|
|
where: { id: { in: projectIds } }
|
|
})
|
|
console.log(`Deleted ${projDeleted.count} dummy projects`)
|
|
}
|
|
|
|
// Delete the round
|
|
await prisma.round.delete({ where: { id: dummyRound.id } })
|
|
console.log('Deleted dummy round')
|
|
} else {
|
|
console.log('No dummy round found')
|
|
}
|
|
|
|
console.log('\nCleanup complete!')
|
|
}
|
|
|
|
cleanup()
|
|
.then(() => prisma.$disconnect())
|
|
.catch(async (e) => {
|
|
console.error(e)
|
|
await prisma.$disconnect()
|
|
process.exit(1)
|
|
})
|