1
0
forked from noxious/server

Added missing entities( zoneEffect, zoneEventTile, zoneEventTileTeleport, zoneObject)

This commit is contained in:
2024-12-25 03:19:53 +01:00
parent b4989aac26
commit 95f4c58110
20 changed files with 489 additions and 391 deletions

View File

@ -1,127 +1,48 @@
import prisma from '#utilities/prisma' // Import the global Prisma instance
import { appLogger } from '#utilities/logger'
import { BaseRepository } from '#repositories/baseRepository'
import { Character } from '#entities/character'
class CharacterRepository {
async getByUserId(userId: number) {
class CharacterRepository extends BaseRepository {
async getByUserId(userId: number): Promise<Character[]> {
try {
return await prisma.character.findMany({
where: {
userId
},
include: {
zone: true,
characterType: {
include: {
sprite: true
}
},
characterHair: {
include: {
sprite: {
include: {
spriteActions: true
}
}
}
}
}
const repository = this.em.getRepository(Character)
return await repository.find({
user: userId
})
} catch (error: any) {
// Handle error
appLogger.error(`Failed to get character by user ID: ${error instanceof Error ? error.message : String(error)}`)
return null
return []
}
}
async getByUserAndId(userId: number, characterId: number) {
async getByUserAndId(userId: number, characterId: number): Promise<Character | null> {
try {
return await prisma.character.findFirst({
where: {
userId,
id: characterId
},
include: {
zone: true,
characterType: {
include: {
sprite: true
}
},
characterHair: {
include: {
sprite: {
include: {
spriteActions: true
}
}
}
}
}
const repository = this.em.getRepository(Character)
return await repository.findOne({
user: userId,
id: characterId
})
} 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) {
async getById(id: number): Promise<Character | null> {
try {
return await prisma.character.findUnique({
where: {
id
},
include: {
zone: true,
characterType: {
include: {
sprite: true
}
},
characterHair: {
include: {
sprite: {
include: {
spriteActions: true
}
}
}
}
}
})
const repository = this.em.getRepository(Character)
return await repository.findOne({ id })
} 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) {
async getByName(name: string): Promise<Character | null> {
try {
return await prisma.character.findFirst({
where: {
name
},
include: {
zone: true,
characterType: {
include: {
sprite: true
}
},
characterHair: {
include: {
sprite: {
include: {
spriteActions: true
}
}
}
}
}
})
const repository = this.em.getRepository(Character)
return await repository.findOne({ name })
} catch (error: any) {
// Handle error
appLogger.error(`Failed to get character by name: ${error instanceof Error ? error.message : String(error)}`)
return null
}