1
0
forked from noxious/server

#237 - Changed Prisma find calls to repos

This commit is contained in:
Colin Kallemein 2024-11-17 19:48:00 +01:00
parent 6ee8bb8334
commit 2e267a36aa
4 changed files with 49 additions and 17 deletions

View File

@ -1,5 +1,5 @@
import { Character, Zone } from '@prisma/client'
import zoneRepository from '../repositories/zoneRepository'
import zoneEventTileRepository from '../repositories/zoneEventTileRepository'
import ZoneCharacter from './zoneCharacter'
class LoadedZone {
@ -38,7 +38,7 @@ class LoadedZone {
public async getGrid(): Promise<number[][]> {
let grid: number[][] = Array.from({ length: this.zone.height }, () => Array.from({ length: this.zone.width }, () => 0))
const eventTiles = await zoneRepository.getEventTiles(this.zone.id)
const eventTiles = await zoneEventTileRepository.getAll(this.zone.id)
// Set the grid values based on the event tiles, these are strings
eventTiles.forEach((eventTile) => {

View File

@ -0,0 +1,37 @@
import { ZoneEventTile } from '@prisma/client'
import prisma from '../utilities/prisma'
import { appLogger } from '../utilities/logger'
class ZoneEventTileRepository {
async getAll(id: number): Promise<ZoneEventTile[]> {
try {
return await prisma.zoneEventTile.findMany({
where: {
zoneId: id
}
})
} catch (error: any) {
appLogger.error(`Failed to get zone event tiles: ${error.message}`)
return []
}
}
async getEventTileByZoneIdAndPosition(zoneId: number, positionX: number, positionY: number) {
try {
return await prisma.zoneEventTile.findFirst({
where: {
zoneId: zoneId,
positionX: positionX,
positionY: positionY
},
include: { teleport: true }
})
} catch (error: any) {
appLogger.error(`Failed to get zone event tile: ${error.message}`)
return null
}
}
}
export default new ZoneEventTileRepository()

View File

@ -53,18 +53,19 @@ class ZoneRepository {
}
}
async getEventTeleportTiles(id: number): Promise<ZoneEventTileWithTeleport[]> {
async getFirstEventTile(zoneId: number, positionX: number, positionY: number): Promise<ZoneEventTile | null> {
try {
return (await prisma.zoneEventTile.findMany({
return await prisma.zoneEventTile.findFirst({
where: {
zoneId: id,
type: ZoneEventTileType.TELEPORT
zoneId: zoneId,
positionX: positionX,
positionY: positionY
},
include: { teleport: true }
})) as unknown as ZoneEventTileWithTeleport[]
})
} catch (error: any) {
appLogger.error(`Failed to get zone event tiles: ${error.message}`)
return []
appLogger.error(`Failed to get zone event tile: ${error.message}`)
return null
}
}

View File

@ -7,6 +7,7 @@ import Rotation from '../../utilities/character/rotation'
import { gameLogger } from '../../utilities/logger'
import ZoneManager from '../../managers/zoneManager'
import ZoneCharacter from '../../models/zoneCharacter'
import zoneEventTileRepository from '../../repositories/zoneEventTileRepository'
export default class CharacterMove {
private readonly characterMoveService = new CharacterMoveService()
@ -58,14 +59,7 @@ export default class CharacterMove {
const [start, end] = [path[i], path[i + 1]]
character.rotation = Rotation.calculate(start.x, start.y, end.x, end.y)
const zoneEventTile = await prisma.zoneEventTile.findFirst({
where: {
zoneId: character.zoneId,
positionX: Math.floor(end.x),
positionY: Math.floor(end.y)
},
include: { teleport: true }
})
const zoneEventTile = await zoneEventTileRepository.getEventTileByZoneIdAndPosition(character.zoneId, Math.floor(end.x), Math.floor(end.y))
if (zoneEventTile?.type === 'BLOCK') break
if (zoneEventTile?.type === 'TELEPORT' && zoneEventTile.teleport) {