1
0
forked from noxious/server
noxious_server/src/repositories/tileRepository.ts
2024-12-27 02:50:11 +01:00

59 lines
1.6 KiB
TypeScript

import { FilterValue } from '@mikro-orm/core'
import { BaseRepository } from '#application/base/baseRepository'
import { unduplicateArray } from '#application/utilities'
import { FlattenZoneArray } from '#application/zone'
import { Tile } from '#entities/tile'
import { Zone } from '#entities/zone'
class TileRepository extends BaseRepository {
async getById(id: FilterValue<`${string}-${string}-${string}-${string}-${string}`>): Promise<any> {
try {
const repository = this.em.getRepository(Tile)
return await repository.findOne({ id })
} catch (error: any) {
return null
}
}
async getByIds(ids: FilterValue<`${string}-${string}-${string}-${string}-${string}`>): Promise<any> {
try {
const repository = this.em.getRepository(Tile)
return await repository.find({
id: ids
})
} catch (error: any) {
return null
}
}
async getAll(): Promise<any> {
try {
const repository = this.em.getRepository(Tile)
return await repository.findAll()
} catch (error: any) {
return null
}
}
async getByZoneId(zoneId: number): Promise<any> {
try {
const repository = this.em.getRepository(Zone)
const tileRepository = this.em.getRepository(Tile)
const zone = await repository.findOne({ id: zoneId })
if (!zone) return null
const zoneTileArray = unduplicateArray(FlattenZoneArray(JSON.parse(JSON.stringify(zone.tiles))))
return await tileRepository.find({
id: zoneTileArray
})
} catch (error: any) {
return null
}
}
}
export default new TileRepository()