ironie-nextjs/prisma/seed-demo-users.ts
2025-05-28 00:41:38 +02:00

85 lines
1.9 KiB
TypeScript

import { prisma } from '@/app/lib/prisma'
async function seedDemoUsers() {
const teamAId = 'cmab28h050001ph4s8w2a0wsc'
const teamBId = 'cmab2acln0003ph4stxe3ad38'
const usersA = Array.from({ length: 4 }, (_, i) => ({
steamId: `76561198000000A${i}`,
name: `DemoA${i}`,
avatar: '/default-avatar.png',
location: 'DE',
team: teamAId,
}))
const usersB = Array.from({ length: 4 }, (_, i) => ({
steamId: `76561198000000B${i}`,
name: `DemoB${i}`,
avatar: '/default-avatar.png',
location: 'DE',
team: teamBId,
}))
// Benutzer einfügen oder updaten
const createdUsers = await Promise.all(
[...usersA, ...usersB].map((user) =>
prisma.user.upsert({
where: { steamId: user.steamId },
update: {},
create: user,
})
)
)
// Team-Aktive Spieler setzen
await prisma.team.update({
where: { id: teamAId },
data: { activePlayers: usersA.map((u) => u.steamId) },
})
await prisma.team.update({
where: { id: teamBId },
data: { activePlayers: usersB.map((u) => u.steamId) },
})
// Zuletzt erstelltes Match mit diesen Teams finden
const match = await prisma.match.findFirst({
where: {
teamAId,
teamBId,
},
orderBy: { createdAt: 'desc' },
})
if (!match) {
throw new Error('Kein Match zwischen den beiden Teams gefunden.')
}
// Spieler zu MatchPlayer hinzufügen
await prisma.matchPlayer.createMany({
data: [
...usersA.map((u) => ({
matchId: match.id,
userId: u.steamId,
teamId: teamAId,
})),
...usersB.map((u) => ({
matchId: match.id,
userId: u.steamId,
teamId: teamBId,
})),
],
skipDuplicates: true,
})
console.log('✅ Demouser erstellt und MatchPlayer zugewiesen.')
}
seedDemoUsers()
.catch((err) => {
console.error('❌ Fehler beim Seed:', err)
})
.finally(() => {
prisma.$disconnect()
})