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 { 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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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}`)
|
||||||
|
@ -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}`)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user