All repositories use MikroORM now

This commit is contained in:
Dennis Postma 2024-12-25 14:09:46 +01:00
parent 4dd71a25b5
commit d70e25207b
3 changed files with 37 additions and 62 deletions

View File

@ -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 { gameLogger } from '#utilities/logger'
import { BaseRepository } from '#repositories/baseRepository'
import { World } from '#entities/world'
class WorldRepository { class WorldRepository extends BaseRepository {
async getFirst(): Promise<World | null> { async getFirst(): Promise<any> {
try { try {
return await prisma.world.findFirst({ const repository = this.em.getRepository(World)
orderBy: { date: 'desc' } return await repository.findOne({})
})
} catch (error: any) { } catch (error: any) {
// Handle error
gameLogger.error(`Failed to get first world: ${error instanceof Error ? error.message : String(error)}`) gameLogger.error(`Failed to get first world: ${error instanceof Error ? error.message : String(error)}`)
return null
} }
} }
} }

View File

@ -1,14 +1,13 @@
import { ZoneEventTile } from '@prisma/client'
import prisma from '#utilities/prisma'
import { appLogger } from '#utilities/logger' 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<ZoneEventTile[]> { async getAll(id: number): Promise<ZoneEventTile[]> {
try { try {
return await prisma.zoneEventTile.findMany({ const repository = this.em.getRepository(ZoneEventTile)
where: { return await repository.find({
zoneId: id zone: id
}
}) })
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get zone event tiles: ${error.message}`) appLogger.error(`Failed to get zone event tiles: ${error.message}`)
@ -18,13 +17,11 @@ class ZoneEventTileRepository {
async getEventTileByZoneIdAndPosition(zoneId: number, positionX: number, positionY: number) { async getEventTileByZoneIdAndPosition(zoneId: number, positionX: number, positionY: number) {
try { try {
return await prisma.zoneEventTile.findFirst({ const repository = this.em.getRepository(ZoneEventTile)
where: { return await repository.findOne({
zoneId: zoneId, zone: zoneId,
positionX: positionX, positionX: positionX,
positionY: positionY positionY: positionY
},
include: { teleport: true }
}) })
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get zone event tile: ${error.message}`) appLogger.error(`Failed to get zone event tile: ${error.message}`)

View File

@ -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 { 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<Zone[]> { async getAll(): Promise<Zone[]> {
try { try {
return await prisma.zone.findMany() const repository = this.em.getRepository(Zone)
return await repository.findAll()
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get all zone: ${error.message}`) appLogger.error(`Failed to get all zone: ${error.message}`)
return [] return []
@ -15,25 +17,8 @@ class ZoneRepository {
async getById(id: number) { async getById(id: number) {
try { try {
return await prisma.zone.findUnique({ const repository = this.em.getRepository(Zone)
where: { return await repository.findOne({ id })
id: id
},
include: {
zoneEventTiles: {
include: {
zone: true,
teleport: true
}
},
zoneObjects: {
include: {
object: true
}
},
zoneEffects: true
}
})
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get zone by id: ${error.message}`) appLogger.error(`Failed to get zone by id: ${error.message}`)
return null return null
@ -42,10 +27,9 @@ class ZoneRepository {
async getEventTiles(id: number): Promise<ZoneEventTile[]> { async getEventTiles(id: number): Promise<ZoneEventTile[]> {
try { try {
return await prisma.zoneEventTile.findMany({ const repository = this.em.getRepository(ZoneEventTile)
where: { return await repository.find({
zoneId: id zone: id
}
}) })
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get zone event tiles: ${error.message}`) 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<ZoneEventTile | null> { async getFirstEventTile(zoneId: number, positionX: number, positionY: number): Promise<ZoneEventTile | null> {
try { try {
return await prisma.zoneEventTile.findFirst({ const repository = this.em.getRepository(ZoneEventTile)
where: { return await repository.findOne({
zoneId: zoneId, zone: zoneId,
positionX: positionX, positionX: positionX,
positionY: positionY positionY: positionY
},
include: { teleport: true }
}) })
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get zone event tile: ${error.message}`) appLogger.error(`Failed to get zone event tile: ${error.message}`)
@ -71,10 +53,9 @@ class ZoneRepository {
async getZoneObjects(id: number): Promise<ZoneObject[]> { async getZoneObjects(id: number): Promise<ZoneObject[]> {
try { try {
return await prisma.zoneObject.findMany({ const repository = this.em.getRepository(ZoneObject)
where: { return await repository.find({
zoneId: id zone: id
}
}) })
} catch (error: any) { } catch (error: any) {
appLogger.error(`Failed to get zone objects: ${error.message}`) appLogger.error(`Failed to get zone objects: ${error.message}`)