forked from noxious/server
#237 - Changed Prisma find calls to repos
This commit is contained in:
parent
6ee8bb8334
commit
2e267a36aa
@ -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) => {
|
||||
|
37
src/repositories/zoneEventTileRepository.ts
Normal file
37
src/repositories/zoneEventTileRepository.ts
Normal 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()
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user