All repositories use MikroORM now
This commit is contained in:
parent
4dd71a25b5
commit
d70e25207b
@ -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<World | null> {
|
||||
class WorldRepository extends BaseRepository {
|
||||
async getFirst(): Promise<any> {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<ZoneEventTile[]> {
|
||||
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,
|
||||
const repository = this.em.getRepository(ZoneEventTile)
|
||||
return await repository.findOne({
|
||||
zone: zoneId,
|
||||
positionX: positionX,
|
||||
positionY: positionY
|
||||
},
|
||||
include: { teleport: true }
|
||||
})
|
||||
} catch (error: any) {
|
||||
appLogger.error(`Failed to get zone event tile: ${error.message}`)
|
||||
|
@ -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<Zone[]> {
|
||||
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<ZoneEventTile[]> {
|
||||
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<ZoneEventTile | null> {
|
||||
try {
|
||||
return await prisma.zoneEventTile.findFirst({
|
||||
where: {
|
||||
zoneId: zoneId,
|
||||
const repository = this.em.getRepository(ZoneEventTile)
|
||||
return await repository.findOne({
|
||||
zone: zoneId,
|
||||
positionX: positionX,
|
||||
positionY: positionY
|
||||
},
|
||||
include: { teleport: true }
|
||||
})
|
||||
} catch (error: any) {
|
||||
appLogger.error(`Failed to get zone event tile: ${error.message}`)
|
||||
@ -71,10 +53,9 @@ class ZoneRepository {
|
||||
|
||||
async getZoneObjects(id: number): Promise<ZoneObject[]> {
|
||||
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}`)
|
||||
|
Loading…
x
Reference in New Issue
Block a user