diff --git a/src/repositories/worldRepository.ts b/src/repositories/worldRepository.ts index 02535bb..6791953 100644 --- a/src/repositories/worldRepository.ts +++ b/src/repositories/worldRepository.ts @@ -1,17 +1,14 @@ -import prisma from '#utilities/prisma' // Import the global Prisma instance -import { World } from '@prisma/client' import { gameLogger } from '#utilities/logger' +import { BaseRepository } from '#repositories/baseRepository' +import { World } from '#entities/world' -class WorldRepository { - async getFirst(): Promise { +class WorldRepository extends BaseRepository { + async getFirst(): Promise { try { - return await prisma.world.findFirst({ - orderBy: { date: 'desc' } - }) + const repository = this.em.getRepository(World) + return await repository.findOne({}) } catch (error: any) { - // Handle error gameLogger.error(`Failed to get first world: ${error instanceof Error ? error.message : String(error)}`) - return null } } } diff --git a/src/repositories/zoneEventTileRepository.ts b/src/repositories/zoneEventTileRepository.ts index 5356e21..c6dca0d 100644 --- a/src/repositories/zoneEventTileRepository.ts +++ b/src/repositories/zoneEventTileRepository.ts @@ -1,14 +1,13 @@ -import { ZoneEventTile } from '@prisma/client' -import prisma from '#utilities/prisma' import { appLogger } from '#utilities/logger' +import { BaseRepository } from '#repositories/baseRepository' +import { ZoneEventTile } from '#entities/zoneEventTile' -class ZoneEventTileRepository { +class ZoneEventTileRepository extends BaseRepository { async getAll(id: number): Promise { try { - return await prisma.zoneEventTile.findMany({ - where: { - zoneId: id - } + const repository = this.em.getRepository(ZoneEventTile) + return await repository.find({ + zone: id }) } catch (error: any) { appLogger.error(`Failed to get zone event tiles: ${error.message}`) @@ -18,13 +17,11 @@ class ZoneEventTileRepository { async getEventTileByZoneIdAndPosition(zoneId: number, positionX: number, positionY: number) { try { - return await prisma.zoneEventTile.findFirst({ - where: { - zoneId: zoneId, - positionX: positionX, - positionY: positionY - }, - include: { teleport: true } + const repository = this.em.getRepository(ZoneEventTile) + return await repository.findOne({ + zone: zoneId, + positionX: positionX, + positionY: positionY }) } catch (error: any) { appLogger.error(`Failed to get zone event tile: ${error.message}`) diff --git a/src/repositories/zoneRepository.ts b/src/repositories/zoneRepository.ts index cf76ec5..ffcd717 100644 --- a/src/repositories/zoneRepository.ts +++ b/src/repositories/zoneRepository.ts @@ -1,12 +1,14 @@ -import { Zone, ZoneEventTile, ZoneEventTileType, ZoneObject } from '@prisma/client' -import prisma from '#utilities/prisma' -import { ZoneEventTileWithTeleport } from '#utilities/types' import { appLogger } from '#utilities/logger' +import { BaseRepository } from '#repositories/baseRepository' +import { ZoneEventTile } from '#entities/zoneEventTile' +import { ZoneObject } from '#entities/zoneObject' +import { Zone } from '#entities/zone' -class ZoneRepository { +class ZoneRepository extends BaseRepository { async getAll(): Promise { try { - return await prisma.zone.findMany() + const repository = this.em.getRepository(Zone) + return await repository.findAll() } catch (error: any) { appLogger.error(`Failed to get all zone: ${error.message}`) return [] @@ -15,25 +17,8 @@ class ZoneRepository { async getById(id: number) { try { - return await prisma.zone.findUnique({ - where: { - id: id - }, - include: { - zoneEventTiles: { - include: { - zone: true, - teleport: true - } - }, - zoneObjects: { - include: { - object: true - } - }, - zoneEffects: true - } - }) + const repository = this.em.getRepository(Zone) + return await repository.findOne({ id }) } catch (error: any) { appLogger.error(`Failed to get zone by id: ${error.message}`) return null @@ -42,10 +27,9 @@ class ZoneRepository { async getEventTiles(id: number): Promise { try { - return await prisma.zoneEventTile.findMany({ - where: { - zoneId: id - } + const repository = this.em.getRepository(ZoneEventTile) + return await repository.find({ + zone: id }) } catch (error: any) { appLogger.error(`Failed to get zone event tiles: ${error.message}`) @@ -55,13 +39,11 @@ class ZoneRepository { async getFirstEventTile(zoneId: number, positionX: number, positionY: number): Promise { try { - return await prisma.zoneEventTile.findFirst({ - where: { - zoneId: zoneId, - positionX: positionX, - positionY: positionY - }, - include: { teleport: true } + const repository = this.em.getRepository(ZoneEventTile) + return await repository.findOne({ + zone: zoneId, + positionX: positionX, + positionY: positionY }) } catch (error: any) { appLogger.error(`Failed to get zone event tile: ${error.message}`) @@ -71,10 +53,9 @@ class ZoneRepository { async getZoneObjects(id: number): Promise { try { - return await prisma.zoneObject.findMany({ - where: { - zoneId: id - } + const repository = this.em.getRepository(ZoneObject) + return await repository.find({ + zone: id }) } catch (error: any) { appLogger.error(`Failed to get zone objects: ${error.message}`)