1
0
forked from noxious/server
noxious_server/src/repositories/tileRepository.ts

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()