server/src/repositories/zoneRepository.ts

78 lines
2.2 KiB
TypeScript

import { appLogger } from '#application/logger'
import { BaseRepository } from '#application/bases/baseRepository'
import { ZoneEventTile } from '#entities/zoneEventTile'
import { ZoneObject } from '#entities/zoneObject'
import { Zone } from '#entities/zone'
class ZoneRepository extends BaseRepository {
async getFirst(): Promise<Zone | null> {
try {
const repository = this.em.getRepository(Zone)
return await repository.findOne({ id: { $exists: true } })
} catch (error: any) {
appLogger.error(`Failed to get first zone: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
async getAll(): Promise<Zone[]> {
try {
const repository = this.em.getRepository(Zone)
return await repository.findAll()
} catch (error: any) {
appLogger.error(`Failed to get all zone: ${error.message}`)
return []
}
}
async getById(id: number) {
try {
const repository = this.em.getRepository(Zone)
return await repository.findOne({ id })
} catch (error: any) {
appLogger.error(`Failed to get zone by id: ${error.message}`)
return null
}
}
async getEventTiles(id: number): Promise<ZoneEventTile[]> {
try {
const repository = this.em.getRepository(ZoneEventTile)
return await repository.find({
zone: id
})
} catch (error: any) {
appLogger.error(`Failed to get zone event tiles: ${error.message}`)
return []
}
}
async getFirstEventTile(zoneId: number, positionX: number, positionY: number): Promise<ZoneEventTile | null> {
try {
const repository = this.em.getRepository(ZoneEventTile)
return await repository.findOne({
zone: zoneId,
positionX: positionX,
positionY: positionY
})
} catch (error: any) {
appLogger.error(`Failed to get zone event tile: ${error.message}`)
return null
}
}
async getZoneObjects(id: number): Promise<ZoneObject[]> {
try {
const repository = this.em.getRepository(ZoneObject)
return await repository.find({
zone: id
})
} catch (error: any) {
appLogger.error(`Failed to get zone objects: ${error.message}`)
return []
}
}
}
export default new ZoneRepository()