forked from noxious/server
39 lines
974 B
TypeScript
39 lines
974 B
TypeScript
import prisma from '../utilities/prisma' // Import the global Prisma instance
|
|
import { Tile } from '@prisma/client'
|
|
import zoneRepository from './zoneRepository'
|
|
import { unduplicateArray } from '../utilities/utilities'
|
|
import { FlattenZoneArray } from '../utilities/zone'
|
|
|
|
class TileRepository {
|
|
async getById(id: string): Promise<Tile | null> {
|
|
return prisma.tile.findUnique({
|
|
where: { id }
|
|
})
|
|
}
|
|
|
|
async getByIds(ids: string[]): Promise<Tile[]> {
|
|
return prisma.tile.findMany({
|
|
where: {
|
|
id: {
|
|
in: ids
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
async getAll(): Promise<Tile[]> {
|
|
return prisma.tile.findMany()
|
|
}
|
|
|
|
async getByZoneId(zoneId: number): Promise<Tile[]> {
|
|
const zone = await zoneRepository.getById(zoneId)
|
|
if (!zone) return []
|
|
|
|
const zoneTileArray = unduplicateArray(FlattenZoneArray(JSON.parse(JSON.stringify(zone.tiles))))
|
|
|
|
return this.getByIds(zoneTileArray)
|
|
}
|
|
}
|
|
|
|
export default new TileRepository()
|