import prisma from '../utilities/prisma' // Import the global Prisma instance import { appLogger } from '../utilities/logger' class CharacterRepository { async getByUserId(userId: number) { try { return await prisma.character.findMany({ where: { userId }, include: { zone: true, characterType: { include: { sprite: true } }, characterHair: { include: { sprite: { include: { spriteActions: true } } } }, equipment: { include: { item: true } } } }) } catch (error: any) { // Handle error appLogger.error(`Failed to get character by user ID: ${error instanceof Error ? error.message : String(error)}`) return null } } async getByUserAndId(userId: number, characterId: number) { try { return await prisma.character.findFirst({ where: { userId, id: characterId }, include: { zone: true, characterType: { include: { sprite: true } }, characterHair: { include: { sprite: { include: { spriteActions: true } } } }, equipment: { include: { item: true } } } }) } catch (error: any) { // Handle error appLogger.error(`Failed to get character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`) return null } } async getById(id: number) { try { return await prisma.character.findUnique({ where: { id }, include: { zone: true, characterType: { include: { sprite: true } }, characterHair: { include: { sprite: { include: { spriteActions: true } } } }, equipment: { include: { item: true } } } }) } catch (error: any) { // Handle error appLogger.error(`Failed to get character by ID: ${error instanceof Error ? error.message : String(error)}`) return null } } async getByName(name: string) { try { return await prisma.character.findFirst({ where: { name }, include: { zone: true, characterType: { include: { sprite: true } }, characterHair: { include: { sprite: { include: { spriteActions: true } } } }, equipment: { include: { item: true } } } }) } catch (error: any) { // Handle error appLogger.error(`Failed to get character by name: ${error instanceof Error ? error.message : String(error)}`) return null } } } export default new CharacterRepository()