Add Notification and Match to DB

Took 42 minutes
This commit is contained in:
Lucàs
2023-03-27 11:23:01 +02:00
parent d32477998c
commit bdcb49a16c
2 changed files with 46 additions and 29 deletions
+38 -12
View File
@@ -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
+8 -17
View File
@@ -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}
}
}