forked from noxious/server
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import { FilterValue } from '@mikro-orm/core'
|
|
|
|
import { BaseRepository } from '#application/base/baseRepository'
|
|
import { UUID } from '#application/types'
|
|
import { unduplicateArray } from '#application/utilities'
|
|
import { Tile } from '#entities/tile'
|
|
import { Zone } from '#entities/zone'
|
|
import ZoneService from '#services/zoneService'
|
|
|
|
class TileRepository extends BaseRepository {
|
|
async getById(id: UUID) {
|
|
try {
|
|
const repository = this.em.getRepository(Tile)
|
|
return await repository.findOne({ id })
|
|
} catch (error: any) {
|
|
return null
|
|
}
|
|
}
|
|
|
|
async getByIds(ids: UUID[]) {
|
|
try {
|
|
const repository = this.em.getRepository(Tile)
|
|
return await repository.find({
|
|
id: ids
|
|
})
|
|
} catch (error: any) {
|
|
return []
|
|
}
|
|
}
|
|
|
|
async getAll() {
|
|
try {
|
|
const repository = this.em.getRepository(Tile)
|
|
return await repository.findAll()
|
|
} catch (error: any) {
|
|
return []
|
|
}
|
|
}
|
|
|
|
async getByZoneId(zoneId: UUID) {
|
|
try {
|
|
const repository = this.em.getRepository(Zone)
|
|
const tileRepository = this.em.getRepository(Tile)
|
|
|
|
const zone = await repository.findOne({ id: zoneId })
|
|
if (!zone) return []
|
|
|
|
const zoneTileArray = unduplicateArray(ZoneService.flattenZoneArray(JSON.parse(JSON.stringify(zone.tiles))))
|
|
|
|
return await tileRepository.find({
|
|
id: zoneTileArray
|
|
})
|
|
} catch (error: any) {
|
|
return []
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new TileRepository()
|