60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import { PrismaClient } from '@prisma/client'
|
|
const prisma = new PrismaClient()
|
|
|
|
export const addLike = async (postId: any, userEmail: any, session: any) => {
|
|
try {
|
|
if (!session) {
|
|
throw new Error('Not Authenticated')
|
|
}
|
|
const existingLike = await prisma.like.findUnique({
|
|
where: { postId_userEmail: { postId, userEmail } }
|
|
})
|
|
if (existingLike) {
|
|
throw new Error('El usuario ya dio like a este post.')
|
|
}
|
|
await prisma.like.create({
|
|
data: {
|
|
postId,
|
|
userEmail
|
|
}
|
|
})
|
|
const updatedLikes = await prisma.post
|
|
.findUnique({
|
|
where: { id: postId }
|
|
})
|
|
.Like()
|
|
|
|
return updatedLikes
|
|
} catch (error) {
|
|
console.error('Error al añadir el like:', error)
|
|
throw new Error('Error al añadir el like')
|
|
}
|
|
}
|
|
|
|
export const deleteLike = async (postId: any, userEmail: string, session: any) => {
|
|
try {
|
|
// Verificar si el usuario ha dado like al post
|
|
const existingLike = await prisma.like.findUnique({
|
|
where: { postId_userEmail: { postId, userEmail } }
|
|
})
|
|
if (!existingLike) {
|
|
throw new Error('El usuario no ha dado like a este post.')
|
|
}
|
|
// Eliminar el like
|
|
await prisma.like.delete({
|
|
where: { postId_userEmail: { postId, userEmail } }
|
|
})
|
|
|
|
const updatedLikes = await prisma.post
|
|
.findUnique({
|
|
where: { id: postId }
|
|
})
|
|
.Like()
|
|
|
|
return updatedLikes
|
|
} catch (error) {
|
|
console.error('Error al quitar el like:', error)
|
|
throw new Error('Error al quitar el like')
|
|
}
|
|
}
|