1
0
forked from noxious/server

Added missing entities( zoneEffect, zoneEventTile, zoneEventTileTeleport, zoneObject)

This commit is contained in:
2024-12-25 03:19:53 +01:00
parent b4989aac26
commit 95f4c58110
20 changed files with 489 additions and 391 deletions

View File

@ -1,37 +1,52 @@
import prisma from '#utilities/prisma' // Import the global Prisma instance
import { Tile } from '@prisma/client'
import zoneRepository from './zoneRepository'
import { FilterValue } from '@mikro-orm/core'
import { BaseRepository } from '#repositories/baseRepository'
import { Tile } from '#entities/tile'
import { Zone } from '#entities/zone'
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 }
})
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: string[]): Promise<Tile[]> {
return prisma.tile.findMany({
where: {
id: {
in: ids
}
}
})
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<Tile[]> {
return prisma.tile.findMany()
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<Tile[]> {
const zone = await zoneRepository.getById(zoneId)
if (!zone) return []
const zoneTileArray = unduplicateArray(FlattenZoneArray(JSON.parse(JSON.stringify(zone.tiles))))
return this.getByIds(zoneTileArray)
async getByZoneId(zoneId: number): Promise<any> {
try {
const repository = this.em.getRepository(Zone)
const zone = await repository.findOne({ id: zoneId })
if (!zone) return null
const zoneTileArray = unduplicateArray(FlattenZoneArray(JSON.parse(JSON.stringify(zone.tiles))))
return await repository.find({
zone: zoneId
})
} catch (error: any) {
return null
}
}
}