Files
got-gaming/prisma/seed.ts

145 lines
4.3 KiB
TypeScript

import {
PrismaClient,
EventType,
EventStatus,
} from "@/prisma/generated/prisma/client";
import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
import bcrypt from "bcryptjs";
const adapter = new PrismaBetterSqlite3({
url: process.env.DATABASE_URL || "file:./dev.db",
});
const prisma = new PrismaClient({ adapter });
async function main() {
// Créer un utilisateur admin
const adminPassword = await bcrypt.hash("admin123", 10);
const admin = await prisma.user.upsert({
where: { email: "admin@got-mc.com" },
update: {},
create: {
email: "admin@got-mc.com",
username: "Admin",
password: adminPassword,
role: "ADMIN",
score: 0,
level: 1,
},
});
// Créer quelques utilisateurs de test
const userPassword = await bcrypt.hash("user123", 10);
const users = await Promise.all([
prisma.user.upsert({
where: { email: "user1@got-mc.com" },
update: {},
create: {
email: "user1@got-mc.com",
username: "DragonSlayer99",
password: userPassword,
score: 125000,
level: 85,
hp: 750,
maxHp: 1000,
xp: 3250,
maxXp: 5000,
},
}),
prisma.user.upsert({
where: { email: "user2@got-mc.com" },
update: {},
create: {
email: "user2@got-mc.com",
username: "MineMaster",
password: userPassword,
score: 118500,
level: 82,
},
}),
prisma.user.upsert({
where: { email: "user3@got-mc.com" },
update: {},
create: {
email: "user3@got-mc.com",
username: "CraftKing",
password: userPassword,
score: 112000,
level: 80,
},
}),
]);
// Créer des événements (vérifier s'ils existent déjà)
const eventData = [
{
date: "18 NOVEMBRE 2023",
name: "Sommet de l'Innovation Tech",
description:
"Rejoignez les leaders de l'industrie et les innovateurs pour une journée de discussions sur les technologies de pointe, les percées de l'IA et des opportunités de networking.",
type: EventType.SUMMIT,
status: EventStatus.PAST,
},
{
date: "3 DÉCEMBRE 2023",
name: "Lancement de la Révolution IA",
description:
"Assistez au lancement de systèmes d'IA révolutionnaires qui vont remodeler le paysage du gaming. Aperçus exclusifs et opportunités d'accès anticipé.",
type: EventType.LAUNCH,
status: EventStatus.PAST,
},
{
date: "22 DÉCEMBRE 2023",
name: "Festival du Code d'Hiver",
description:
"Une célébration de l'excellence en programmation avec des hackathons, des défis de codage et des prix. Montrez vos compétences et rivalisez avec les meilleurs développeurs.",
type: EventType.FESTIVAL,
status: EventStatus.PAST,
},
{
date: "15 JANVIER 2024",
name: "Expo Informatique Quantique",
description:
"Explorez l'avenir de l'informatique quantique dans le gaming. Démonstrations interactives, conférences d'experts et ateliers pratiques pour tous les niveaux.",
type: EventType.SUMMIT,
status: EventStatus.UPCOMING,
},
{
date: "8 FÉVRIER 2024",
name: "Championnat Cyber Arena",
description:
"L'événement de gaming compétitif ultime. Compétissez pour la gloire, des récompenses exclusives et le titre de Champion Cyber Arena. Inscriptions ouvertes.",
type: EventType.COMPETITION,
status: EventStatus.UPCOMING,
},
{
date: "12 MARS 2024",
name: "Gala Tech du Printemps",
description:
"Une soirée élégante célébrant les réalisations technologiques. Cérémonie de remise de prix, networking et annonces exclusives des plus grandes entreprises tech.",
type: EventType.FESTIVAL,
status: EventStatus.UPCOMING,
},
];
const events = await Promise.all(
eventData.map(async (data) => {
const existing = await prisma.event.findFirst({
where: { name: data.name },
});
if (existing) return existing;
return prisma.event.create({ data });
})
);
console.log("Seed completed:", { admin, users, events });
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(async () => {
await prisma.$disconnect();
});