1
0
forked from noxious/server
noxious_server/src/repositories/characterRepository.ts

152 lines
3.4 KiB
TypeScript

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()