Add database and Prisma configurations, enhance event and leaderboard components with API integration, and update navigation for session management
This commit is contained in:
144
prisma/seed.ts
Normal file
144
prisma/seed.ts
Normal file
@@ -0,0 +1,144 @@
|
||||
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();
|
||||
});
|
||||
Reference in New Issue
Block a user