Refactor event date handling: Update event model to use DateTime type for date fields in Prisma schema. Modify API routes and UI components to ensure consistent date formatting and handling, improving data integrity and user experience across event management and display.

This commit is contained in:
Julien Froidefond
2025-12-10 05:32:23 +01:00
parent fdd860c456
commit 1b07fe8ae5
9 changed files with 160 additions and 49 deletions

View File

@@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = {
"clientVersion": "7.1.0",
"engineVersion": "ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba",
"activeProvider": "sqlite",
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nenum Role {\n USER\n ADMIN\n}\n\nenum EventType {\n SUMMIT\n LAUNCH\n FESTIVAL\n COMPETITION\n CODE_KATA\n}\n\nenum EventStatus {\n UPCOMING\n LIVE\n PAST\n}\n\nenum CharacterClass {\n WARRIOR\n MAGE\n ROGUE\n RANGER\n PALADIN\n ENGINEER\n MERCHANT\n SCHOLAR\n BERSERKER\n NECROMANCER\n}\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n password String\n username String @unique\n role Role @default(USER)\n score Int @default(0)\n level Int @default(1)\n hp Int @default(1000)\n maxHp Int @default(1000)\n xp Int @default(0)\n maxXp Int @default(5000)\n avatar String?\n bio String?\n characterClass CharacterClass?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n preferences UserPreferences?\n eventRegistrations EventRegistration[]\n\n @@index([score])\n @@index([email])\n}\n\nmodel UserPreferences {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Background images for each page\n homeBackground String?\n eventsBackground String?\n leaderboardBackground String?\n\n // Other UI preferences can be added here\n theme String? @default(\"default\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Event {\n id String @id @default(cuid())\n date String\n name String\n description String\n type EventType\n status EventStatus\n room String?\n time String?\n maxPlaces Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n registrations EventRegistration[]\n\n @@index([status])\n @@index([date])\n}\n\nmodel EventRegistration {\n id String @id @default(cuid())\n userId String\n eventId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@unique([userId, eventId])\n @@index([userId])\n @@index([eventId])\n}\n\nmodel SitePreferences {\n id String @id @default(\"global\")\n homeBackground String?\n eventsBackground String?\n leaderboardBackground String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nenum Role {\n USER\n ADMIN\n}\n\nenum EventType {\n SUMMIT\n LAUNCH\n FESTIVAL\n COMPETITION\n CODE_KATA\n}\n\nenum EventStatus {\n UPCOMING\n LIVE\n PAST\n}\n\nenum CharacterClass {\n WARRIOR\n MAGE\n ROGUE\n RANGER\n PALADIN\n ENGINEER\n MERCHANT\n SCHOLAR\n BERSERKER\n NECROMANCER\n}\n\nmodel User {\n id String @id @default(cuid())\n email String @unique\n password String\n username String @unique\n role Role @default(USER)\n score Int @default(0)\n level Int @default(1)\n hp Int @default(1000)\n maxHp Int @default(1000)\n xp Int @default(0)\n maxXp Int @default(5000)\n avatar String?\n bio String?\n characterClass CharacterClass?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n preferences UserPreferences?\n eventRegistrations EventRegistration[]\n\n @@index([score])\n @@index([email])\n}\n\nmodel UserPreferences {\n id String @id @default(cuid())\n userId String @unique\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Background images for each page\n homeBackground String?\n eventsBackground String?\n leaderboardBackground String?\n\n // Other UI preferences can be added here\n theme String? @default(\"default\")\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n\nmodel Event {\n id String @id @default(cuid())\n date DateTime\n name String\n description String\n type EventType\n status EventStatus\n room String?\n time String?\n maxPlaces Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n registrations EventRegistration[]\n\n @@index([status])\n @@index([date])\n}\n\nmodel EventRegistration {\n id String @id @default(cuid())\n userId String\n eventId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)\n createdAt DateTime @default(now())\n\n @@unique([userId, eventId])\n @@index([userId])\n @@index([eventId])\n}\n\nmodel SitePreferences {\n id String @id @default(\"global\")\n homeBackground String?\n eventsBackground String?\n leaderboardBackground String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n}\n",
"runtimeDataModel": {
"models": {},
"enums": {},
@@ -28,7 +28,7 @@ const config: runtime.GetPrismaClientConfig = {
}
}
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"Role\"},{\"name\":\"score\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"level\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"hp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxHp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"xp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxXp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"avatar\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"characterClass\",\"kind\":\"enum\",\"type\":\"CharacterClass\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"preferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"eventRegistrations\",\"kind\":\"object\",\"type\":\"EventRegistration\",\"relationName\":\"EventRegistrationToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"homeBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventsBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leaderboardBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"theme\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"EventType\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"EventStatus\"},{\"name\":\"room\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"time\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"maxPlaces\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrations\",\"kind\":\"object\",\"type\":\"EventRegistration\",\"relationName\":\"EventToEventRegistration\"}],\"dbName\":null},\"EventRegistration\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventRegistrationToUser\"},{\"name\":\"event\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToEventRegistration\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"SitePreferences\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"homeBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventsBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leaderboardBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"Role\"},{\"name\":\"score\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"level\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"hp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxHp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"xp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxXp\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"avatar\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bio\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"characterClass\",\"kind\":\"enum\",\"type\":\"CharacterClass\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"preferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"eventRegistrations\",\"kind\":\"object\",\"type\":\"EventRegistration\",\"relationName\":\"EventRegistrationToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"homeBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventsBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leaderboardBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"theme\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Event\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"EventType\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"EventStatus\"},{\"name\":\"room\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"time\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"maxPlaces\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"registrations\",\"kind\":\"object\",\"type\":\"EventRegistration\",\"relationName\":\"EventToEventRegistration\"}],\"dbName\":null},\"EventRegistration\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"EventRegistrationToUser\"},{\"name\":\"event\",\"kind\":\"object\",\"type\":\"Event\",\"relationName\":\"EventToEventRegistration\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"SitePreferences\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"homeBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eventsBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leaderboardBackground\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
const { Buffer } = await import('node:buffer')

View File

@@ -36,7 +36,7 @@ export type EventSumAggregateOutputType = {
export type EventMinAggregateOutputType = {
id: string | null
date: string | null
date: Date | null
name: string | null
description: string | null
type: $Enums.EventType | null
@@ -50,7 +50,7 @@ export type EventMinAggregateOutputType = {
export type EventMaxAggregateOutputType = {
id: string | null
date: string | null
date: Date | null
name: string | null
description: string | null
type: $Enums.EventType | null
@@ -217,7 +217,7 @@ export type EventGroupByArgs<ExtArgs extends runtime.Types.Extensions.InternalAr
export type EventGroupByOutputType = {
id: string
date: string
date: Date
name: string
description: string
type: $Enums.EventType
@@ -254,7 +254,7 @@ export type EventWhereInput = {
OR?: Prisma.EventWhereInput[]
NOT?: Prisma.EventWhereInput | Prisma.EventWhereInput[]
id?: Prisma.StringFilter<"Event"> | string
date?: Prisma.StringFilter<"Event"> | string
date?: Prisma.DateTimeFilter<"Event"> | Date | string
name?: Prisma.StringFilter<"Event"> | string
description?: Prisma.StringFilter<"Event"> | string
type?: Prisma.EnumEventTypeFilter<"Event"> | $Enums.EventType
@@ -287,7 +287,7 @@ export type EventWhereUniqueInput = Prisma.AtLeast<{
AND?: Prisma.EventWhereInput | Prisma.EventWhereInput[]
OR?: Prisma.EventWhereInput[]
NOT?: Prisma.EventWhereInput | Prisma.EventWhereInput[]
date?: Prisma.StringFilter<"Event"> | string
date?: Prisma.DateTimeFilter<"Event"> | Date | string
name?: Prisma.StringFilter<"Event"> | string
description?: Prisma.StringFilter<"Event"> | string
type?: Prisma.EnumEventTypeFilter<"Event"> | $Enums.EventType
@@ -324,7 +324,7 @@ export type EventScalarWhereWithAggregatesInput = {
OR?: Prisma.EventScalarWhereWithAggregatesInput[]
NOT?: Prisma.EventScalarWhereWithAggregatesInput | Prisma.EventScalarWhereWithAggregatesInput[]
id?: Prisma.StringWithAggregatesFilter<"Event"> | string
date?: Prisma.StringWithAggregatesFilter<"Event"> | string
date?: Prisma.DateTimeWithAggregatesFilter<"Event"> | Date | string
name?: Prisma.StringWithAggregatesFilter<"Event"> | string
description?: Prisma.StringWithAggregatesFilter<"Event"> | string
type?: Prisma.EnumEventTypeWithAggregatesFilter<"Event"> | $Enums.EventType
@@ -338,7 +338,7 @@ export type EventScalarWhereWithAggregatesInput = {
export type EventCreateInput = {
id?: string
date: string
date: Date | string
name: string
description: string
type: $Enums.EventType
@@ -353,7 +353,7 @@ export type EventCreateInput = {
export type EventUncheckedCreateInput = {
id?: string
date: string
date: Date | string
name: string
description: string
type: $Enums.EventType
@@ -368,7 +368,7 @@ export type EventUncheckedCreateInput = {
export type EventUpdateInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
name?: Prisma.StringFieldUpdateOperationsInput | string
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
@@ -383,7 +383,7 @@ export type EventUpdateInput = {
export type EventUncheckedUpdateInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
name?: Prisma.StringFieldUpdateOperationsInput | string
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
@@ -398,7 +398,7 @@ export type EventUncheckedUpdateInput = {
export type EventCreateManyInput = {
id?: string
date: string
date: Date | string
name: string
description: string
type: $Enums.EventType
@@ -412,7 +412,7 @@ export type EventCreateManyInput = {
export type EventUpdateManyMutationInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
name?: Prisma.StringFieldUpdateOperationsInput | string
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
@@ -426,7 +426,7 @@ export type EventUpdateManyMutationInput = {
export type EventUncheckedUpdateManyInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
name?: Prisma.StringFieldUpdateOperationsInput | string
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
@@ -525,7 +525,7 @@ export type EventUpdateOneRequiredWithoutRegistrationsNestedInput = {
export type EventCreateWithoutRegistrationsInput = {
id?: string
date: string
date: Date | string
name: string
description: string
type: $Enums.EventType
@@ -539,7 +539,7 @@ export type EventCreateWithoutRegistrationsInput = {
export type EventUncheckedCreateWithoutRegistrationsInput = {
id?: string
date: string
date: Date | string
name: string
description: string
type: $Enums.EventType
@@ -569,7 +569,7 @@ export type EventUpdateToOneWithWhereWithoutRegistrationsInput = {
export type EventUpdateWithoutRegistrationsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
name?: Prisma.StringFieldUpdateOperationsInput | string
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
@@ -583,7 +583,7 @@ export type EventUpdateWithoutRegistrationsInput = {
export type EventUncheckedUpdateWithoutRegistrationsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.StringFieldUpdateOperationsInput | string
date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
name?: Prisma.StringFieldUpdateOperationsInput | string
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
@@ -699,7 +699,7 @@ export type $EventPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs
}
scalars: runtime.Types.Extensions.GetPayloadResult<{
id: string
date: string
date: Date
name: string
description: string
type: $Enums.EventType
@@ -1134,7 +1134,7 @@ export interface Prisma__EventClient<T, Null = never, ExtArgs extends runtime.Ty
*/
export interface EventFieldRefs {
readonly id: Prisma.FieldRef<"Event", 'String'>
readonly date: Prisma.FieldRef<"Event", 'String'>
readonly date: Prisma.FieldRef<"Event", 'DateTime'>
readonly name: Prisma.FieldRef<"Event", 'String'>
readonly description: Prisma.FieldRef<"Event", 'String'>
readonly type: Prisma.FieldRef<"Event", 'EventType'>

View File

@@ -0,0 +1,45 @@
-- AlterTable
-- SQLite ne supporte pas directement le changement de type, donc on doit recréer la table
-- On convertit les dates string ISO en datetime
-- Créer une nouvelle table avec le bon type
CREATE TABLE "Event_new" (
"id" TEXT NOT NULL PRIMARY KEY,
"date" DATETIME NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT NOT NULL,
"type" TEXT NOT NULL,
"status" TEXT NOT NULL,
"room" TEXT,
"time" TEXT,
"maxPlaces" INTEGER,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
);
-- Copier les données en convertissant les dates string en datetime
INSERT INTO "Event_new" ("id", "date", "name", "description", "type", "status", "room", "time", "maxPlaces", "createdAt", "updatedAt")
SELECT
"id",
datetime("date") as "date",
"name",
"description",
"type",
"status",
"room",
"time",
"maxPlaces",
"createdAt",
"updatedAt"
FROM "Event";
-- Supprimer l'ancienne table
DROP TABLE "Event";
-- Renommer la nouvelle table
ALTER TABLE "Event_new" RENAME TO "Event";
-- Recréer les index
CREATE INDEX "Event_status_idx" ON "Event"("status");
CREATE INDEX "Event_date_idx" ON "Event"("date");

View File

@@ -85,7 +85,7 @@ model UserPreferences {
model Event {
id String @id @default(cuid())
date String
date DateTime
name String
description String
type EventType

View File

@@ -148,7 +148,7 @@ async function main() {
// Créer des événements (vérifier s'ils existent déjà)
const eventData = [
{
date: "2023-11-18",
date: new Date("2025-11-18"),
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.",
@@ -156,7 +156,7 @@ async function main() {
status: EventStatus.PAST,
},
{
date: "2023-12-03",
date: new Date("2025-12-03"),
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é.",
@@ -164,7 +164,7 @@ async function main() {
status: EventStatus.PAST,
},
{
date: "2023-12-22",
date: new Date("2025-12-22"),
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.",
@@ -172,7 +172,7 @@ async function main() {
status: EventStatus.PAST,
},
{
date: "2024-01-15",
date: new Date("2025-01-15"),
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.",
@@ -180,7 +180,7 @@ async function main() {
status: EventStatus.UPCOMING,
},
{
date: "2024-02-08",
date: new Date("2025-02-08"),
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.",
@@ -188,7 +188,7 @@ async function main() {
status: EventStatus.UPCOMING,
},
{
date: "2024-03-12",
date: new Date("2025-03-12"),
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.",
@@ -196,7 +196,7 @@ async function main() {
status: EventStatus.UPCOMING,
},
{
date: "2024-12-15",
date: new Date("2025-12-15"),
name: "Builder pattern : construction et refactoring",
description:
"Lors de cet atelier, nous utiliserons le design pattern Builder pour structurer pas à pas la création d'objets complexes… sans transformer notre code en film digne de Red Is Dead.\n\nVous découvrirez comment ce pattern permet de découpler proprement la logique de construction, d'améliorer la lisibilité et de faciliter l'évolution du code — notamment lors de phases de refactoring où les responsabilités se mélangent plus vite que la foule au Palais des Festivals.\n\nL'objectif : poser les fondations pour introduire un vrai modèle, sans rien casser du comportement existant.\n\nQue vous souhaitiez renforcer vos compétences en conception, préparer votre prochain refactoring, ou simplement coder avec plus de style que Serge Karamazov dansant la carioca, venez construire avec nous.",