Enhance event model and management: Add new fields for room, time, and maxPlaces to the Event model in Prisma schema. Update API routes and UI components to support these fields, improving event details and user interaction in event management and registration processes.

This commit is contained in:
Julien Froidefond
2025-12-10 05:27:35 +01:00
parent fb5c8c1466
commit fdd860c456
13 changed files with 564 additions and 22 deletions

View File

@@ -181,6 +181,17 @@ export type EnumEventStatusFilter<$PrismaModel = never> = {
not?: Prisma.NestedEnumEventStatusFilter<$PrismaModel> | $Enums.EventStatus
}
export type IntNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null
notIn?: number[] | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null
}
export type EnumEventTypeWithAggregatesFilter<$PrismaModel = never> = {
equals?: $Enums.EventType | Prisma.EnumEventTypeFieldRefInput<$PrismaModel>
in?: $Enums.EventType[]
@@ -201,6 +212,22 @@ export type EnumEventStatusWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedEnumEventStatusFilter<$PrismaModel>
}
export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null
notIn?: number[] | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_avg?: Prisma.NestedFloatNullableFilter<$PrismaModel>
_sum?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>
}
export type NestedStringFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[]
@@ -405,4 +432,31 @@ export type NestedEnumEventStatusWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedEnumEventStatusFilter<$PrismaModel>
}
export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null
notIn?: number[] | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_avg?: Prisma.NestedFloatNullableFilter<$PrismaModel>
_sum?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>
}
export type NestedFloatNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null
in?: number[] | null
notIn?: number[] | null
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null
}

View File

@@ -21,7 +21,8 @@ export const EventType = {
SUMMIT: 'SUMMIT',
LAUNCH: 'LAUNCH',
FESTIVAL: 'FESTIVAL',
COMPETITION: 'COMPETITION'
COMPETITION: 'COMPETITION',
CODE_KATA: 'CODE_KATA'
} as const
export type EventType = (typeof EventType)[keyof typeof EventType]

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}\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 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 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",
"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\":\"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\":\"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\":{}}")
async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
const { Buffer } = await import('node:buffer')

View File

@@ -857,6 +857,9 @@ export const EventScalarFieldEnum = {
description: 'description',
type: 'type',
status: 'status',
room: 'room',
time: 'time',
maxPlaces: 'maxPlaces',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
} as const

View File

@@ -114,6 +114,9 @@ export const EventScalarFieldEnum = {
description: 'description',
type: 'type',
status: 'status',
room: 'room',
time: 'time',
maxPlaces: 'maxPlaces',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
} as const

View File

@@ -20,10 +20,20 @@ export type EventModel = runtime.Types.Result.DefaultSelection<Prisma.$EventPayl
export type AggregateEvent = {
_count: EventCountAggregateOutputType | null
_avg: EventAvgAggregateOutputType | null
_sum: EventSumAggregateOutputType | null
_min: EventMinAggregateOutputType | null
_max: EventMaxAggregateOutputType | null
}
export type EventAvgAggregateOutputType = {
maxPlaces: number | null
}
export type EventSumAggregateOutputType = {
maxPlaces: number | null
}
export type EventMinAggregateOutputType = {
id: string | null
date: string | null
@@ -31,6 +41,9 @@ export type EventMinAggregateOutputType = {
description: string | null
type: $Enums.EventType | null
status: $Enums.EventStatus | null
room: string | null
time: string | null
maxPlaces: number | null
createdAt: Date | null
updatedAt: Date | null
}
@@ -42,6 +55,9 @@ export type EventMaxAggregateOutputType = {
description: string | null
type: $Enums.EventType | null
status: $Enums.EventStatus | null
room: string | null
time: string | null
maxPlaces: number | null
createdAt: Date | null
updatedAt: Date | null
}
@@ -53,12 +69,23 @@ export type EventCountAggregateOutputType = {
description: number
type: number
status: number
room: number
time: number
maxPlaces: number
createdAt: number
updatedAt: number
_all: number
}
export type EventAvgAggregateInputType = {
maxPlaces?: true
}
export type EventSumAggregateInputType = {
maxPlaces?: true
}
export type EventMinAggregateInputType = {
id?: true
date?: true
@@ -66,6 +93,9 @@ export type EventMinAggregateInputType = {
description?: true
type?: true
status?: true
room?: true
time?: true
maxPlaces?: true
createdAt?: true
updatedAt?: true
}
@@ -77,6 +107,9 @@ export type EventMaxAggregateInputType = {
description?: true
type?: true
status?: true
room?: true
time?: true
maxPlaces?: true
createdAt?: true
updatedAt?: true
}
@@ -88,6 +121,9 @@ export type EventCountAggregateInputType = {
description?: true
type?: true
status?: true
room?: true
time?: true
maxPlaces?: true
createdAt?: true
updatedAt?: true
_all?: true
@@ -128,6 +164,18 @@ export type EventAggregateArgs<ExtArgs extends runtime.Types.Extensions.Internal
* Count returned Events
**/
_count?: true | EventCountAggregateInputType
/**
* {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
*
* Select which fields to average
**/
_avg?: EventAvgAggregateInputType
/**
* {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
*
* Select which fields to sum
**/
_sum?: EventSumAggregateInputType
/**
* {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
*
@@ -161,6 +209,8 @@ export type EventGroupByArgs<ExtArgs extends runtime.Types.Extensions.InternalAr
take?: number
skip?: number
_count?: EventCountAggregateInputType | true
_avg?: EventAvgAggregateInputType
_sum?: EventSumAggregateInputType
_min?: EventMinAggregateInputType
_max?: EventMaxAggregateInputType
}
@@ -172,9 +222,14 @@ export type EventGroupByOutputType = {
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room: string | null
time: string | null
maxPlaces: number | null
createdAt: Date
updatedAt: Date
_count: EventCountAggregateOutputType | null
_avg: EventAvgAggregateOutputType | null
_sum: EventSumAggregateOutputType | null
_min: EventMinAggregateOutputType | null
_max: EventMaxAggregateOutputType | null
}
@@ -204,6 +259,9 @@ export type EventWhereInput = {
description?: Prisma.StringFilter<"Event"> | string
type?: Prisma.EnumEventTypeFilter<"Event"> | $Enums.EventType
status?: Prisma.EnumEventStatusFilter<"Event"> | $Enums.EventStatus
room?: Prisma.StringNullableFilter<"Event"> | string | null
time?: Prisma.StringNullableFilter<"Event"> | string | null
maxPlaces?: Prisma.IntNullableFilter<"Event"> | number | null
createdAt?: Prisma.DateTimeFilter<"Event"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"Event"> | Date | string
registrations?: Prisma.EventRegistrationListRelationFilter
@@ -216,6 +274,9 @@ export type EventOrderByWithRelationInput = {
description?: Prisma.SortOrder
type?: Prisma.SortOrder
status?: Prisma.SortOrder
room?: Prisma.SortOrderInput | Prisma.SortOrder
time?: Prisma.SortOrderInput | Prisma.SortOrder
maxPlaces?: Prisma.SortOrderInput | Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
registrations?: Prisma.EventRegistrationOrderByRelationAggregateInput
@@ -231,6 +292,9 @@ export type EventWhereUniqueInput = Prisma.AtLeast<{
description?: Prisma.StringFilter<"Event"> | string
type?: Prisma.EnumEventTypeFilter<"Event"> | $Enums.EventType
status?: Prisma.EnumEventStatusFilter<"Event"> | $Enums.EventStatus
room?: Prisma.StringNullableFilter<"Event"> | string | null
time?: Prisma.StringNullableFilter<"Event"> | string | null
maxPlaces?: Prisma.IntNullableFilter<"Event"> | number | null
createdAt?: Prisma.DateTimeFilter<"Event"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"Event"> | Date | string
registrations?: Prisma.EventRegistrationListRelationFilter
@@ -243,11 +307,16 @@ export type EventOrderByWithAggregationInput = {
description?: Prisma.SortOrder
type?: Prisma.SortOrder
status?: Prisma.SortOrder
room?: Prisma.SortOrderInput | Prisma.SortOrder
time?: Prisma.SortOrderInput | Prisma.SortOrder
maxPlaces?: Prisma.SortOrderInput | Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
_count?: Prisma.EventCountOrderByAggregateInput
_avg?: Prisma.EventAvgOrderByAggregateInput
_max?: Prisma.EventMaxOrderByAggregateInput
_min?: Prisma.EventMinOrderByAggregateInput
_sum?: Prisma.EventSumOrderByAggregateInput
}
export type EventScalarWhereWithAggregatesInput = {
@@ -260,6 +329,9 @@ export type EventScalarWhereWithAggregatesInput = {
description?: Prisma.StringWithAggregatesFilter<"Event"> | string
type?: Prisma.EnumEventTypeWithAggregatesFilter<"Event"> | $Enums.EventType
status?: Prisma.EnumEventStatusWithAggregatesFilter<"Event"> | $Enums.EventStatus
room?: Prisma.StringNullableWithAggregatesFilter<"Event"> | string | null
time?: Prisma.StringNullableWithAggregatesFilter<"Event"> | string | null
maxPlaces?: Prisma.IntNullableWithAggregatesFilter<"Event"> | number | null
createdAt?: Prisma.DateTimeWithAggregatesFilter<"Event"> | Date | string
updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Event"> | Date | string
}
@@ -271,6 +343,9 @@ export type EventCreateInput = {
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room?: string | null
time?: string | null
maxPlaces?: number | null
createdAt?: Date | string
updatedAt?: Date | string
registrations?: Prisma.EventRegistrationCreateNestedManyWithoutEventInput
@@ -283,6 +358,9 @@ export type EventUncheckedCreateInput = {
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room?: string | null
time?: string | null
maxPlaces?: number | null
createdAt?: Date | string
updatedAt?: Date | string
registrations?: Prisma.EventRegistrationUncheckedCreateNestedManyWithoutEventInput
@@ -295,6 +373,9 @@ export type EventUpdateInput = {
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
status?: Prisma.EnumEventStatusFieldUpdateOperationsInput | $Enums.EventStatus
room?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
time?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
maxPlaces?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
registrations?: Prisma.EventRegistrationUpdateManyWithoutEventNestedInput
@@ -307,6 +388,9 @@ export type EventUncheckedUpdateInput = {
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
status?: Prisma.EnumEventStatusFieldUpdateOperationsInput | $Enums.EventStatus
room?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
time?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
maxPlaces?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
registrations?: Prisma.EventRegistrationUncheckedUpdateManyWithoutEventNestedInput
@@ -319,6 +403,9 @@ export type EventCreateManyInput = {
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room?: string | null
time?: string | null
maxPlaces?: number | null
createdAt?: Date | string
updatedAt?: Date | string
}
@@ -330,6 +417,9 @@ export type EventUpdateManyMutationInput = {
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
status?: Prisma.EnumEventStatusFieldUpdateOperationsInput | $Enums.EventStatus
room?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
time?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
maxPlaces?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}
@@ -341,6 +431,9 @@ export type EventUncheckedUpdateManyInput = {
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
status?: Prisma.EnumEventStatusFieldUpdateOperationsInput | $Enums.EventStatus
room?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
time?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
maxPlaces?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}
@@ -352,10 +445,17 @@ export type EventCountOrderByAggregateInput = {
description?: Prisma.SortOrder
type?: Prisma.SortOrder
status?: Prisma.SortOrder
room?: Prisma.SortOrder
time?: Prisma.SortOrder
maxPlaces?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
}
export type EventAvgOrderByAggregateInput = {
maxPlaces?: Prisma.SortOrder
}
export type EventMaxOrderByAggregateInput = {
id?: Prisma.SortOrder
date?: Prisma.SortOrder
@@ -363,6 +463,9 @@ export type EventMaxOrderByAggregateInput = {
description?: Prisma.SortOrder
type?: Prisma.SortOrder
status?: Prisma.SortOrder
room?: Prisma.SortOrder
time?: Prisma.SortOrder
maxPlaces?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
}
@@ -374,10 +477,17 @@ export type EventMinOrderByAggregateInput = {
description?: Prisma.SortOrder
type?: Prisma.SortOrder
status?: Prisma.SortOrder
room?: Prisma.SortOrder
time?: Prisma.SortOrder
maxPlaces?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
}
export type EventSumOrderByAggregateInput = {
maxPlaces?: Prisma.SortOrder
}
export type EventScalarRelationFilter = {
is?: Prisma.EventWhereInput
isNot?: Prisma.EventWhereInput
@@ -391,6 +501,14 @@ export type EnumEventStatusFieldUpdateOperationsInput = {
set?: $Enums.EventStatus
}
export type NullableIntFieldUpdateOperationsInput = {
set?: number | null
increment?: number
decrement?: number
multiply?: number
divide?: number
}
export type EventCreateNestedOneWithoutRegistrationsInput = {
create?: Prisma.XOR<Prisma.EventCreateWithoutRegistrationsInput, Prisma.EventUncheckedCreateWithoutRegistrationsInput>
connectOrCreate?: Prisma.EventCreateOrConnectWithoutRegistrationsInput
@@ -412,6 +530,9 @@ export type EventCreateWithoutRegistrationsInput = {
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room?: string | null
time?: string | null
maxPlaces?: number | null
createdAt?: Date | string
updatedAt?: Date | string
}
@@ -423,6 +544,9 @@ export type EventUncheckedCreateWithoutRegistrationsInput = {
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room?: string | null
time?: string | null
maxPlaces?: number | null
createdAt?: Date | string
updatedAt?: Date | string
}
@@ -450,6 +574,9 @@ export type EventUpdateWithoutRegistrationsInput = {
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
status?: Prisma.EnumEventStatusFieldUpdateOperationsInput | $Enums.EventStatus
room?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
time?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
maxPlaces?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}
@@ -461,6 +588,9 @@ export type EventUncheckedUpdateWithoutRegistrationsInput = {
description?: Prisma.StringFieldUpdateOperationsInput | string
type?: Prisma.EnumEventTypeFieldUpdateOperationsInput | $Enums.EventType
status?: Prisma.EnumEventStatusFieldUpdateOperationsInput | $Enums.EventStatus
room?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
time?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
maxPlaces?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}
@@ -503,6 +633,9 @@ export type EventSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs =
description?: boolean
type?: boolean
status?: boolean
room?: boolean
time?: boolean
maxPlaces?: boolean
createdAt?: boolean
updatedAt?: boolean
registrations?: boolean | Prisma.Event$registrationsArgs<ExtArgs>
@@ -516,6 +649,9 @@ export type EventSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensi
description?: boolean
type?: boolean
status?: boolean
room?: boolean
time?: boolean
maxPlaces?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["event"]>
@@ -527,6 +663,9 @@ export type EventSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensi
description?: boolean
type?: boolean
status?: boolean
room?: boolean
time?: boolean
maxPlaces?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["event"]>
@@ -538,11 +677,14 @@ export type EventSelectScalar = {
description?: boolean
type?: boolean
status?: boolean
room?: boolean
time?: boolean
maxPlaces?: boolean
createdAt?: boolean
updatedAt?: boolean
}
export type EventOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "date" | "name" | "description" | "type" | "status" | "createdAt" | "updatedAt", ExtArgs["result"]["event"]>
export type EventOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "date" | "name" | "description" | "type" | "status" | "room" | "time" | "maxPlaces" | "createdAt" | "updatedAt", ExtArgs["result"]["event"]>
export type EventInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
registrations?: boolean | Prisma.Event$registrationsArgs<ExtArgs>
_count?: boolean | Prisma.EventCountOutputTypeDefaultArgs<ExtArgs>
@@ -562,6 +704,9 @@ export type $EventPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs
description: string
type: $Enums.EventType
status: $Enums.EventStatus
room: string | null
time: string | null
maxPlaces: number | null
createdAt: Date
updatedAt: Date
}, ExtArgs["result"]["event"]>
@@ -994,6 +1139,9 @@ export interface EventFieldRefs {
readonly description: Prisma.FieldRef<"Event", 'String'>
readonly type: Prisma.FieldRef<"Event", 'EventType'>
readonly status: Prisma.FieldRef<"Event", 'EventStatus'>
readonly room: Prisma.FieldRef<"Event", 'String'>
readonly time: Prisma.FieldRef<"Event", 'String'>
readonly maxPlaces: Prisma.FieldRef<"Event", 'Int'>
readonly createdAt: Prisma.FieldRef<"Event", 'DateTime'>
readonly updatedAt: Prisma.FieldRef<"Event", 'DateTime'>
}

View File

@@ -0,0 +1,4 @@
-- AlterTable
ALTER TABLE "Event" ADD COLUMN "maxPlaces" INTEGER;
ALTER TABLE "Event" ADD COLUMN "room" TEXT;
ALTER TABLE "Event" ADD COLUMN "time" TEXT;

View File

@@ -20,6 +20,7 @@ enum EventType {
LAUNCH
FESTIVAL
COMPETITION
CODE_KATA
}
enum EventStatus {
@@ -89,6 +90,9 @@ model Event {
description String
type EventType
status EventStatus
room String?
time String?
maxPlaces Int?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
registrations EventRegistration[]

View File

@@ -148,7 +148,7 @@ async function main() {
// Créer des événements (vérifier s'ils existent déjà)
const eventData = [
{
date: "18 NOVEMBRE 2023",
date: "2023-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: "3 DÉCEMBRE 2023",
date: "2023-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: "22 DÉCEMBRE 2023",
date: "2023-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: "15 JANVIER 2024",
date: "2024-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: "8 FÉVRIER 2024",
date: "2024-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,13 +188,24 @@ async function main() {
status: EventStatus.UPCOMING,
},
{
date: "12 MARS 2024",
date: "2024-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.",
type: EventType.FESTIVAL,
status: EventStatus.UPCOMING,
},
{
date: "2024-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.",
type: EventType.CODE_KATA,
status: EventStatus.UPCOMING,
room: "Nautilus",
time: "11h-12h",
maxPlaces: 25,
},
];
const events = await Promise.all(
@@ -202,7 +213,12 @@ async function main() {
const existing = await prisma.event.findFirst({
where: { name: data.name },
});
if (existing) return existing;
if (existing) {
return prisma.event.update({
where: { id: existing.id },
data,
});
}
return prisma.event.create({ data });
})
);