94 lines
2.2 KiB
TypeScript
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()
|
|
}
|
|
}
|