69 lines
1.4 KiB
TypeScript
69 lines
1.4 KiB
TypeScript
import { PrismaClient } from '@prisma/client'
|
|
const prisma = new PrismaClient()
|
|
|
|
export const deletePost = async (slug: string) => {
|
|
try {
|
|
const post = await prisma.post.findUnique({
|
|
where: {
|
|
slug: slug
|
|
},
|
|
include: {
|
|
comments: true
|
|
}
|
|
})
|
|
if (!post) {
|
|
throw new Error('Post not found')
|
|
}
|
|
await prisma.like.deleteMany({
|
|
where: {
|
|
postId: post.id
|
|
}
|
|
})
|
|
await prisma.comment.deleteMany({
|
|
where: {
|
|
postSlug: slug
|
|
}
|
|
})
|
|
await prisma.post.delete({
|
|
where: {
|
|
slug: slug
|
|
}
|
|
})
|
|
} catch (error) {
|
|
console.error(error, 'Error deleting post')
|
|
throw new Error('Error deleting post')
|
|
}
|
|
}
|
|
|
|
export const editPost = async (slug: string, newData: any) => {
|
|
try {
|
|
// Buscar el post que se va a editar
|
|
const existingPost = await prisma.post.findUnique({
|
|
where: {
|
|
slug: slug
|
|
}
|
|
})
|
|
// Verificar si el post existe
|
|
if (!existingPost) {
|
|
throw new Error('Post not found')
|
|
}
|
|
// Actualizar el post con los nuevos datos
|
|
const updatedPost = await prisma.post.update({
|
|
where: {
|
|
slug: slug
|
|
},
|
|
data: {
|
|
...newData
|
|
// Tags: {
|
|
// set: newData.Tags.map((tag: any) => ({ id: tag.id }))
|
|
// }
|
|
}
|
|
})
|
|
|
|
return updatedPost
|
|
} catch (error) {
|
|
console.error(error, 'Error editing post')
|
|
throw new Error('Error editing post')
|
|
}
|
|
}
|