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(); });