145 lines
4.3 KiB
TypeScript
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();
|
|
});
|