favorite는 user에 의해서 생성되고, product을 가리킨다
model Fav {
id Int @id @default(autoincrement())
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
userId Int
product Product @relation(fields: [productId], references: [id], onDelete: Cascade)
productId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model User {
...
fav Fav[]
}
model Product {
...
favs Fav[]
}
그리고, npx prisma db push
, 프론트 서버 재실행을 후에 prisma studio를 확인한다.
fav가 product에 존재한다면, 삭제하고 존재하지 않는다면 생성한다. 먼저 fav의 여부를 확인 할 product을 조회해야 한다. 그리고 그 product에서 fav가 존재하지는지 아닌지 확인한다.
export default handler (){
// 조회하고자 하는 product을 조회하는 쿼리문
const alreadyExists = await client.fav.findFirtst({
where: {
productId, // req.query를 통해 확인
userId, // req.session에서 확인
}
});
if(alreadyExists){
// delete
await client.fav.delete({
where: {
id: alreadyExists.id,
}
})
} else {
// create fav
await client.fav.crete({
data: {
userId: {
user: {
connect: {
id: user?.id,
}
}
},
productId: {},
}
})
}
}