LaLiga-FrontEnd/prisma/user.ts

94 lines
2.2 KiB
TypeScript

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export const getAllUsers = async () => {
try {
const users = await prisma.user.findMany()
return users
} catch (error) {
console.error('Error fetching users:', error)
throw new Error('Error fetching users')
}
}
export const getUserByEmail = async (email: string) => {
try {
const user = await prisma.user.findUnique({
where: {
email: email
},
include: {
Like: true,
Favorite: true
}
})
return user
} catch (error) {
console.error('Error fetching user by ID:', error)
throw new Error('Error fetching user by ID')
}
}
export const deleteUserByEmail = async (email: string) => {
try {
const userDeleted = await prisma.user.delete({
where: {
email: email
},
include: {
Like: true,
Comment: true,
sessions: true,
accounts: true
}
})
return userDeleted
} catch (error) {
console.error(`Error deleting user with email ${email}:`, error)
throw new Error(`Unable to delete user with email ${email}`)
}
}
export const updateUserByEmail = async (email: string, newData: any) => {
try {
const { name } = newData
if (name) {
const existingUserWithSameName = await prisma.user.findFirst({
where: {
name: name,
email: { not: email }
}
})
if (existingUserWithSameName) {
return { success: false, status: 409, error: `Name ${name} is already in use by another user` }
}
}
// Verificar si el usuario existe
const existingUser = await prisma.user.findUnique({
where: {
email: email
}
})
if (!existingUser) {
return { status: 404, error: `User with email ${email} not found` }
}
// Actualizar el usuario con los nuevos datos
const updatedUser = await prisma.user.update({
where: {
email: email
},
data: newData
})
return updatedUser
} catch (error) {
console.error(`Error updating user with email ${email}:`, error)
return { status: 500, error: `Unable to update user with email ${email}` }
} finally {
await prisma.$disconnect()
}
}