1
0
forked from noxious/server

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 { 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
}
}
}

View File

@ -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}`)

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 { 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}`)