diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 594ac20..d8b2033 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,18 +10,20 @@ datasource db { // Models model User { - id String @id @default(auto()) @map("_id") @db.ObjectId - email String @unique - password String - firstName String? - lastName String? - bio String? - location String? - images String[] - birthdate DateTime? - gender Gender @default(UNKNOWN) - role Role @default(USER) - createdAt DateTime @default(now()) + id String @id @default(auto()) @map("_id") @db.ObjectId + email String @unique + password String + firstName String? + lastName String? + bio String? + location String? + images String[] + birthdate DateTime? + gender Gender @default(UNKNOWN) + role Role @default(USER) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) + lastConnexion DateTime @default(now()) // Liste des chats de l'utilisateur ChatID String[] @db.ObjectId @@ -41,6 +43,24 @@ model User { // Les personnes qui aiment l'utilisateur OtherUserLikesID String[] @db.ObjectId OtherUserLikes User[] @relation("Likes", fields: [OtherUserLikesID], references: [id]) + + MatchId String[] @db.ObjectId + Match Match[] @relation(fields: [MatchId], references: [id]) + + Notification Notification[] +} + +model Notification { + id String @id @default(auto()) @map("_id") @db.ObjectId + type NotificationType + UserId String @db.ObjectId + User User @relation(fields: [UserId], references: [id]) +} + +model Match { + id String @id @default(auto()) @map("_id") @db.ObjectId + UserId String[] @db.ObjectId + User User[] @relation(fields: [UserId], references: [id]) } model Passion { @@ -82,6 +102,12 @@ enum Gender { UNKNOWN } +enum NotificationType { + NEW_MATCH + NEW_LIKE + NEW_MESSAGE +} + enum Role { USER ADMIN diff --git a/src/pages/api/[...nextcrud].ts b/src/pages/api/[...nextcrud].ts index 18cd7e7..0a753d5 100644 --- a/src/pages/api/[...nextcrud].ts +++ b/src/pages/api/[...nextcrud].ts @@ -3,13 +3,6 @@ import prismaClient from '@/lib/prismaClient'; import {NextApiRequest, NextApiResponse} from 'next'; import {hashPassword} from '@/lib/PasswordTools'; -type CreateUserQuery = { - email: string - password: string - firstName: string - lastName: string -} - export default async function handler( req: NextApiRequest, res: NextApiResponse @@ -19,16 +12,14 @@ export default async function handler( adapter: new PrismaAdapter({prismaClient: prismaClient}), }); - // Hash le mot de passe quand on crée un utilisateur - if (req.url === "/api/users" && req.method === "POST") { - const {email, password, firstName, lastName} = req.body as CreateUserQuery; - - if (!email || !password || !firstName || !lastName) - return res.status(400).send({message: req.body}); - - const hashedPassword: string = await hashPassword(password); - req.body = {...req.body, password: hashedPassword} - } + await onUserCreate(req); return nextCrudHandler(req, res); +} + +async function onUserCreate(req: NextApiRequest) { + if (req.url === "/api/users" && req.method === "POST") { + const password: string = await hashPassword(req.body.password); + req.body = {...req.body, password} + } } \ No newline at end of file