Map event tile improvements
This commit is contained in:
parent
57b21f1499
commit
d7982493e1
@ -46,7 +46,7 @@ export class Map extends BaseEntity {
|
|||||||
|
|
||||||
@OneToMany(() => PlacedMapObject, (pmo) => pmo.map, {
|
@OneToMany(() => PlacedMapObject, (pmo) => pmo.map, {
|
||||||
name: 'placedMapObjects',
|
name: 'placedMapObjects',
|
||||||
orphanRemoval: true,
|
orphanRemoval: true
|
||||||
})
|
})
|
||||||
placedMapObjects = new Collection<PlacedMapObject>(this)
|
placedMapObjects = new Collection<PlacedMapObject>(this)
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ export class MapEventTile extends BaseEntity {
|
|||||||
@Property()
|
@Property()
|
||||||
positionY!: number
|
positionY!: number
|
||||||
|
|
||||||
@OneToOne(() => MapEventTileTeleport, (teleport) => teleport.mapEventTile)
|
@OneToOne(() => MapEventTileTeleport, (teleport) => teleport.mapEventTile, { eager: true })
|
||||||
teleport?: MapEventTileTeleport
|
teleport?: MapEventTileTeleport
|
||||||
|
|
||||||
setId(id: UUID) {
|
setId(id: UUID) {
|
||||||
|
@ -16,7 +16,7 @@ export class MapEventTileTeleport extends BaseEntity {
|
|||||||
@OneToOne({ deleteRule: 'cascade' })
|
@OneToOne({ deleteRule: 'cascade' })
|
||||||
mapEventTile!: MapEventTile
|
mapEventTile!: MapEventTile
|
||||||
|
|
||||||
@ManyToOne({ deleteRule: 'cascade' })
|
@ManyToOne({ deleteRule: 'cascade', eager: true })
|
||||||
toMap!: Map
|
toMap!: Map
|
||||||
|
|
||||||
@Property()
|
@Property()
|
||||||
|
@ -14,10 +14,10 @@ export class PlacedMapObject extends BaseEntity {
|
|||||||
@PrimaryKey()
|
@PrimaryKey()
|
||||||
id = randomUUID()
|
id = randomUUID()
|
||||||
|
|
||||||
@ManyToOne(()=> Map, { deleteRule: 'cascade' })
|
@ManyToOne({ deleteRule: 'cascade' })
|
||||||
map!: Map
|
map!: Map
|
||||||
|
|
||||||
@ManyToOne({ deleteRule: 'cascade' })
|
@ManyToOne({ deleteRule: 'cascade', eager: true })
|
||||||
mapObject!: MapObject
|
mapObject!: MapObject
|
||||||
|
|
||||||
@Property()
|
@Property()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { UUID } from '#application/types'
|
|
||||||
import { BaseEvent } from '#application/base/baseEvent'
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
import CharacterTypeRepository from '#repositories/characterTypeRepository'
|
|
||||||
import { CharacterGender, CharacterRace } from '#application/enums'
|
import { CharacterGender, CharacterRace } from '#application/enums'
|
||||||
|
import { UUID } from '#application/types'
|
||||||
|
import CharacterTypeRepository from '#repositories/characterTypeRepository'
|
||||||
import SpriteRepository from '#repositories/spriteRepository'
|
import SpriteRepository from '#repositories/spriteRepository'
|
||||||
|
|
||||||
type Payload = {
|
type Payload = {
|
||||||
@ -19,7 +19,6 @@ export default class CharacterTypeUpdateEvent extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
|
private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!(await this.isCharacterGM())) return
|
if (!(await this.isCharacterGM())) return
|
||||||
|
|
||||||
@ -31,13 +30,7 @@ export default class CharacterTypeUpdateEvent extends BaseEvent {
|
|||||||
const sprite = await spriteRepository.getById(data.spriteId)
|
const sprite = await spriteRepository.getById(data.spriteId)
|
||||||
if (!sprite) return callback(false)
|
if (!sprite) return callback(false)
|
||||||
|
|
||||||
await characterType
|
await characterType.setName(data.name).setGender(data.gender).setRace(data.race).setIsSelectable(data.isSelectable).setSprite(sprite).save()
|
||||||
.setName(data.name)
|
|
||||||
.setGender(data.gender)
|
|
||||||
.setRace(data.race)
|
|
||||||
.setIsSelectable(data.isSelectable)
|
|
||||||
.setSprite(sprite)
|
|
||||||
.save()
|
|
||||||
|
|
||||||
return callback(true)
|
return callback(true)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { BaseEvent } from '#application/base/baseEvent'
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
import ItemRepository from '#repositories/itemRepository'
|
|
||||||
import { ItemType, ItemRarity } from '#application/enums'
|
import { ItemType, ItemRarity } from '#application/enums'
|
||||||
import { UUID } from '#application/types'
|
import { UUID } from '#application/types'
|
||||||
|
import ItemRepository from '#repositories/itemRepository'
|
||||||
import SpriteRepository from '#repositories/spriteRepository'
|
import SpriteRepository from '#repositories/spriteRepository'
|
||||||
|
|
||||||
type Payload = {
|
type Payload = {
|
||||||
@ -20,7 +20,6 @@ export default class ItemUpdateEvent extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
|
private async handleEvent(data: Payload, callback: (success: boolean) => void): Promise<void> {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!(await this.isCharacterGM())) return
|
if (!(await this.isCharacterGM())) return
|
||||||
|
|
||||||
@ -32,14 +31,7 @@ export default class ItemUpdateEvent extends BaseEvent {
|
|||||||
const sprite = await spriteRepository.getById(data.spriteId)
|
const sprite = await spriteRepository.getById(data.spriteId)
|
||||||
if (!sprite) return callback(false)
|
if (!sprite) return callback(false)
|
||||||
|
|
||||||
await item
|
await item.setName(data.name).setDescription(data.description).setItemType(data.itemType).setStackable(data.stackable).setRarity(data.rarity).setSprite(sprite).save()
|
||||||
.setName(data.name)
|
|
||||||
.setDescription(data.description)
|
|
||||||
.setItemType(data.itemType)
|
|
||||||
.setStackable(data.stackable)
|
|
||||||
.setRarity(data.rarity)
|
|
||||||
.setSprite(sprite)
|
|
||||||
.save()
|
|
||||||
|
|
||||||
return callback(true)
|
return callback(true)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { Sprite } from '@prisma/client'
|
|
||||||
|
|
||||||
import { BaseEvent } from '#application/base/baseEvent'
|
import { BaseEvent } from '#application/base/baseEvent'
|
||||||
|
import { Sprite } from '#entities/sprite'
|
||||||
import SpriteRepository from '#repositories/spriteRepository'
|
import SpriteRepository from '#repositories/spriteRepository'
|
||||||
|
|
||||||
interface IPayload {}
|
interface IPayload {}
|
||||||
|
@ -21,7 +21,7 @@ interface IPayload {
|
|||||||
positionX: number
|
positionX: number
|
||||||
positionY: number
|
positionY: number
|
||||||
teleport?: {
|
teleport?: {
|
||||||
toMapId: UUID
|
toMap: Map
|
||||||
toPositionX: number
|
toPositionX: number
|
||||||
toPositionY: number
|
toPositionY: number
|
||||||
toRotation: number
|
toRotation: number
|
||||||
@ -32,6 +32,7 @@ interface IPayload {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default class MapUpdateEvent extends BaseEvent {
|
export default class MapUpdateEvent extends BaseEvent {
|
||||||
|
private readonly populateOptions = ['mapEventTiles', 'placedMapObjects', 'mapEffects'];
|
||||||
public listen(): void {
|
public listen(): void {
|
||||||
this.socket.on('gm:map:update', this.handleEvent.bind(this))
|
this.socket.on('gm:map:update', this.handleEvent.bind(this))
|
||||||
}
|
}
|
||||||
@ -48,7 +49,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
return callback(null)
|
return callback(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
let mapRepository = new MapRepository()
|
const mapRepository = new MapRepository()
|
||||||
let map = await mapRepository.getById(data.mapId)
|
let map = await mapRepository.getById(data.mapId)
|
||||||
|
|
||||||
if (!map) {
|
if (!map) {
|
||||||
@ -57,7 +58,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
await mapRepository.getEntityManager().populate(map, ['*'])
|
await mapRepository.getEntityManager().populate(map, this.populateOptions)
|
||||||
|
|
||||||
// Validation logic remains the same
|
// Validation logic remains the same
|
||||||
if (data.tiles.length > data.height) {
|
if (data.tiles.length > data.height) {
|
||||||
@ -83,7 +84,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
|
|
||||||
if (tile.teleport) {
|
if (tile.teleport) {
|
||||||
const teleport = new MapEventTileTeleport()
|
const teleport = new MapEventTileTeleport()
|
||||||
.setToMap((await mapRepository.getById(tile.teleport.toMapId))!)
|
.setToMap((await mapRepository.getById(tile.teleport.toMap.id))!)
|
||||||
.setToPositionX(tile.teleport.toPositionX)
|
.setToPositionX(tile.teleport.toPositionX)
|
||||||
.setToPositionY(tile.teleport.toPositionY)
|
.setToPositionY(tile.teleport.toPositionY)
|
||||||
.setToRotation(tile.teleport.toRotation)
|
.setToRotation(tile.teleport.toRotation)
|
||||||
@ -91,7 +92,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
mapEventTile.setTeleport(teleport)
|
mapEventTile.setTeleport(teleport)
|
||||||
}
|
}
|
||||||
|
|
||||||
// map.mapEventTiles.add(mapEventTile)
|
map.mapEventTiles.add(mapEventTile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create and add new map objects
|
// Create and add new map objects
|
||||||
@ -103,26 +104,27 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
.setPositionX(object.positionX)
|
.setPositionX(object.positionX)
|
||||||
.setPositionY(object.positionY)
|
.setPositionY(object.positionY)
|
||||||
.setMap(map)
|
.setMap(map)
|
||||||
|
|
||||||
map.placedMapObjects.add(mapObject)
|
map.placedMapObjects.add(mapObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create and add new map effects
|
// Create and add new map effects
|
||||||
for (const effect of data.mapEffects) {
|
for (const effect of data.mapEffects) {
|
||||||
const mapEffect = new MapEffect().setEffect(effect.effect).setStrength(effect.strength).setMap(map)
|
const mapEffect = new MapEffect().setEffect(effect.effect).setStrength(effect.strength).setMap(map)
|
||||||
// map.mapEffects.add(mapEffect)
|
|
||||||
|
map.mapEffects.add(mapEffect)
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(map.getPlacedMapObjects().count())
|
console.log(map.getPlacedMapObjects().count())
|
||||||
|
|
||||||
// Update map properties
|
// Update map properties
|
||||||
// map.setEntityManager(mapRepository.getEntityManager())
|
|
||||||
await map.setName(data.name).setWidth(data.width).setHeight(data.height).setTiles(data.tiles).setPvp(data.pvp).setUpdatedAt(new Date()).save()
|
await map.setName(data.name).setWidth(data.width).setHeight(data.height).setTiles(data.tiles).setPvp(data.pvp).setUpdatedAt(new Date()).save()
|
||||||
|
|
||||||
// Reload map from database to get fresh data
|
// Reload map from database to get fresh data
|
||||||
mapRepository = new MapRepository()
|
|
||||||
map = await mapRepository.getById(data.mapId)
|
map = await mapRepository.getById(data.mapId)
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
await mapRepository.getEntityManager().populate(map!, ['*'])
|
await mapRepository.getEntityManager().populate(map!, this.populateOptions)
|
||||||
|
|
||||||
if (!map) {
|
if (!map) {
|
||||||
this.logger.info(`User ${character!.getId()} tried to update map ${data.mapId} but it does not exist after update.`)
|
this.logger.info(`User ${character!.getId()} tried to update map ${data.mapId} but it does not exist after update.`)
|
||||||
@ -135,7 +137,7 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
|
|
||||||
return callback(map)
|
return callback(map)
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`gm:mapObject:update error: ${error instanceof Error ? error.message : String(error)}`)
|
this.emitError(`gm:map:update error: ${error instanceof Error ? error.message + error.stack : String(error)}`)
|
||||||
return callback(null)
|
return callback(null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ export default class CharacterMove extends BaseEvent {
|
|||||||
|
|
||||||
private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise<void> {
|
private async handleEvent({ positionX, positionY }: { positionX: number; positionY: number }): Promise<void> {
|
||||||
const mapCharacter = MapManager.getCharacterById(this.socket.characterId!)
|
const mapCharacter = MapManager.getCharacterById(this.socket.characterId!)
|
||||||
if (!mapCharacter?.character) {
|
if (!mapCharacter?.getCharacter()) {
|
||||||
this.logger.error('map:character:move error: Character not found or not initialized')
|
this.logger.error('map:character:move error: Character not found or not initialized')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -39,7 +39,7 @@ export default class CharacterMove extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async moveAlongPath(mapCharacter: MapCharacter, path: Array<{ x: number; y: number }>): Promise<void> {
|
private async moveAlongPath(mapCharacter: MapCharacter, path: Array<{ x: number; y: number }>): Promise<void> {
|
||||||
const { character } = mapCharacter
|
const character = mapCharacter.getCharacter()
|
||||||
|
|
||||||
for (let i = 0; i < path.length - 1; i++) {
|
for (let i = 0; i < path.length - 1; i++) {
|
||||||
if (!mapCharacter.isMoving || mapCharacter.currentPath !== path) {
|
if (!mapCharacter.isMoving || mapCharacter.currentPath !== path) {
|
||||||
@ -47,10 +47,10 @@ export default class CharacterMove extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const [start, end] = [path[i], path[i + 1]]
|
const [start, end] = [path[i], path[i + 1]]
|
||||||
character.rotation = CharacterService.calculateRotation(start.x, start.y, end.x, end.y)
|
character.setRotation(CharacterService.calculateRotation(start.x, start.y, end.x, end.y))
|
||||||
|
|
||||||
const mapEventTileRepository = new MapEventTileRepository()
|
const mapEventTileRepository = new MapEventTileRepository()
|
||||||
const mapEventTile = await mapEventTileRepository.getEventTileByMapIdAndPosition(character.map.id, Math.floor(end.x), Math.floor(end.y))
|
const mapEventTile = await mapEventTileRepository.getEventTileByMapIdAndPosition(character.getMap().getId(), Math.floor(end.x), Math.floor(end.y))
|
||||||
|
|
||||||
if (mapEventTile?.type === 'BLOCK') break
|
if (mapEventTile?.type === 'BLOCK') break
|
||||||
if (mapEventTile?.type === 'TELEPORT' && mapEventTile.teleport) {
|
if (mapEventTile?.type === 'TELEPORT' && mapEventTile.teleport) {
|
||||||
@ -59,15 +59,14 @@ export default class CharacterMove extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update position first
|
// Update position first
|
||||||
character.positionX = end.x
|
character.setPositionX(end.x).setPositionY(end.y)
|
||||||
character.positionY = end.y
|
|
||||||
|
|
||||||
// Then emit with the same properties
|
// Then emit with the same properties
|
||||||
this.io.in(character.map.id).emit('map:character:move', {
|
this.io.in(character.map.id).emit('map:character:move', {
|
||||||
characterId: character.id,
|
characterId: character.id,
|
||||||
positionX: character.positionX,
|
positionX: character.getPositionX(),
|
||||||
positionY: character.positionY,
|
positionY: character.getPositionY(),
|
||||||
rotation: character.rotation,
|
rotation: character.getRotation(),
|
||||||
isMoving: true
|
isMoving: true
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -80,18 +79,12 @@ export default class CharacterMove extends BaseEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async handleMapEventTile(mapEventTile: MapEventTileWithTeleport): Promise<void> {
|
private async handleMapEventTile(mapEventTile: MapEventTileWithTeleport): Promise<void> {
|
||||||
const mapCharacter = MapManager.getCharacterById(this.socket.characterId!)
|
if (mapEventTile.getTeleport()) {
|
||||||
if (!mapCharacter) {
|
await TeleportService.teleportCharacter(this.socket.characterId!, {
|
||||||
this.logger.error('map:character:move error: Character not found')
|
targetMapId: mapEventTile.getTeleport()!.getToMap().getId(),
|
||||||
return
|
targetX: mapEventTile.getTeleport()!.getToPositionX(),
|
||||||
}
|
targetY: mapEventTile.getTeleport()!.getToPositionY(),
|
||||||
|
rotation: mapEventTile.getTeleport()!.getToRotation()
|
||||||
if (mapEventTile.teleport) {
|
|
||||||
await TeleportService.teleportCharacter(mapCharacter.character.id, {
|
|
||||||
targetMapId: mapEventTile.teleport.toMap.id,
|
|
||||||
targetX: mapEventTile.teleport.toPositionX,
|
|
||||||
targetY: mapEventTile.teleport.toPositionY,
|
|
||||||
rotation: mapCharacter.character.rotation
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Server } from 'socket.io'
|
import { Server } from 'socket.io'
|
||||||
|
|
||||||
import { TSocket } from '#application/types'
|
import { TSocket, UUID } from '#application/types'
|
||||||
import { Character } from '#entities/character'
|
import { Character } from '#entities/character'
|
||||||
import MapManager from '#managers/mapManager'
|
import MapManager from '#managers/mapManager'
|
||||||
import SocketManager from '#managers/socketManager'
|
import SocketManager from '#managers/socketManager'
|
||||||
@ -15,11 +15,15 @@ class MapCharacter {
|
|||||||
this.character = character
|
this.character = character
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getCharacter(): Character {
|
||||||
|
return this.character
|
||||||
|
}
|
||||||
|
|
||||||
public async savePosition() {
|
public async savePosition() {
|
||||||
await this.character.setPositionX(this.character.positionX).setPositionY(this.character.positionY).setRotation(this.character.rotation).setMap(this.character.map).save()
|
await this.character.setPositionX(this.character.positionX).setPositionY(this.character.positionY).setRotation(this.character.rotation).setMap(this.character.map).save()
|
||||||
}
|
}
|
||||||
|
|
||||||
public async teleport(mapId: number, targetX: number, targetY: number): Promise<void> {
|
public async teleport(mapId: UUID, targetX: number, targetY: number): Promise<void> {
|
||||||
await TeleportService.teleportCharacter(this.character.id, {
|
await TeleportService.teleportCharacter(this.character.id, {
|
||||||
targetMapId: mapId,
|
targetMapId: mapId,
|
||||||
targetX,
|
targetX,
|
||||||
|
@ -6,7 +6,10 @@ class CharacterHairRepository extends BaseRepository {
|
|||||||
async getFirst() {
|
async getFirst() {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterHair)
|
const repository = this.getEntityManager().getRepository(CharacterHair)
|
||||||
return await repository.findOne({ id: { $exists: true } })
|
const result = await repository.findOne({ id: { $exists: true } })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get first character hair: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get first character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -16,7 +19,10 @@ class CharacterHairRepository extends BaseRepository {
|
|||||||
async getAll(): Promise<CharacterHair[]> {
|
async getAll(): Promise<CharacterHair[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterHair)
|
const repository = this.getEntityManager().getRepository(CharacterHair)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get all character hair: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get all character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -26,7 +32,10 @@ class CharacterHairRepository extends BaseRepository {
|
|||||||
async getAllSelectable(populate?: any): Promise<CharacterHair[]> {
|
async getAllSelectable(populate?: any): Promise<CharacterHair[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterHair)
|
const repository = this.getEntityManager().getRepository(CharacterHair)
|
||||||
return await repository.find({ isSelectable: true }, { populate })
|
const results = await repository.find({ isSelectable: true }, { populate })
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get selectable character hair: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get selectable character hair: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -36,7 +45,10 @@ class CharacterHairRepository extends BaseRepository {
|
|||||||
async getById(id: UUID): Promise<CharacterHair | null> {
|
async getById(id: UUID): Promise<CharacterHair | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterHair)
|
const repository = this.getEntityManager().getRepository(CharacterHair)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get character hair by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get character hair by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
|
@ -6,7 +6,10 @@ class CharacterRepository extends BaseRepository {
|
|||||||
async getByUserId(userId: UUID): Promise<Character[]> {
|
async getByUserId(userId: UUID): Promise<Character[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Character)
|
const repository = this.getEntityManager().getRepository(Character)
|
||||||
return await repository.find({ user: userId })
|
const results = await repository.find({ user: userId })
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get character by user ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get character by user ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -16,7 +19,10 @@ class CharacterRepository extends BaseRepository {
|
|||||||
async getByUserAndId(userId: UUID, characterId: UUID): Promise<Character | null> {
|
async getByUserAndId(userId: UUID, characterId: UUID): Promise<Character | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Character)
|
const repository = this.getEntityManager().getRepository(Character)
|
||||||
return await repository.findOne({ user: userId, id: characterId })
|
const result = await repository.findOne({ user: userId, id: characterId })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -26,7 +32,10 @@ class CharacterRepository extends BaseRepository {
|
|||||||
async getById(id: UUID, populate?: any): Promise<Character | null> {
|
async getById(id: UUID, populate?: any): Promise<Character | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Character)
|
const repository = this.getEntityManager().getRepository(Character)
|
||||||
return await repository.findOne({ id }, { populate })
|
const result = await repository.findOne({ id }, { populate })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get character by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get character by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -36,7 +45,10 @@ class CharacterRepository extends BaseRepository {
|
|||||||
async getByName(name: string, populate?: any): Promise<Character | null> {
|
async getByName(name: string, populate?: any): Promise<Character | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Character)
|
const repository = this.getEntityManager().getRepository(Character)
|
||||||
return await repository.findOne({ name }, { populate })
|
const result = await repository.findOne({ name }, { populate })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get character by name: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get character by name: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
|
@ -6,7 +6,10 @@ class CharacterTypeRepository extends BaseRepository {
|
|||||||
async getFirst() {
|
async getFirst() {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterType)
|
const repository = this.getEntityManager().getRepository(CharacterType)
|
||||||
return await repository.findOne({ id: { $exists: true } })
|
const result = await repository.findOne({ id: { $exists: true } })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get first character type: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get first character type: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -16,7 +19,10 @@ class CharacterTypeRepository extends BaseRepository {
|
|||||||
async getAll() {
|
async getAll() {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterType)
|
const repository = this.getEntityManager().getRepository(CharacterType)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get all character types: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get all character types: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -26,7 +32,10 @@ class CharacterTypeRepository extends BaseRepository {
|
|||||||
async getById(id: UUID) {
|
async getById(id: UUID) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(CharacterType)
|
const repository = this.getEntityManager().getRepository(CharacterType)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get character type by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get character type by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
|
@ -6,9 +6,10 @@ class ChatRepository extends BaseRepository {
|
|||||||
async getById(id: UUID): Promise<Chat[]> {
|
async getById(id: UUID): Promise<Chat[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Chat)
|
const repository = this.getEntityManager().getRepository(Chat)
|
||||||
return await repository.find({
|
const results = await repository.find({ id })
|
||||||
id
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
})
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get chat by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get chat by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -18,7 +19,10 @@ class ChatRepository extends BaseRepository {
|
|||||||
async getAll(): Promise<Chat[]> {
|
async getAll(): Promise<Chat[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Chat)
|
const repository = this.getEntityManager().getRepository(Chat)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get all chats: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get all chats: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -28,7 +32,10 @@ class ChatRepository extends BaseRepository {
|
|||||||
async getByCharacterId(characterId: UUID): Promise<Chat[]> {
|
async getByCharacterId(characterId: UUID): Promise<Chat[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Chat)
|
const repository = this.getEntityManager().getRepository(Chat)
|
||||||
return await repository.find({ character: characterId })
|
const results = await repository.find({ character: characterId })
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get chats by character ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get chats by character ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -38,7 +45,10 @@ class ChatRepository extends BaseRepository {
|
|||||||
async getByMapId(mapId: UUID): Promise<Chat[]> {
|
async getByMapId(mapId: UUID): Promise<Chat[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Chat)
|
const repository = this.getEntityManager().getRepository(Chat)
|
||||||
return await repository.find({ map: mapId })
|
const results = await repository.find({ map: mapId })
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get chats by map ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get chats by map ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
|
@ -6,7 +6,10 @@ class ItemRepository extends BaseRepository {
|
|||||||
async getById(id: UUID): Promise<Item | null> {
|
async getById(id: UUID): Promise<Item | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Item)
|
const repository = this.getEntityManager().getRepository(Item)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get item by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get item by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -16,7 +19,10 @@ class ItemRepository extends BaseRepository {
|
|||||||
async getByIds(ids: UUID[]): Promise<Item[]> {
|
async getByIds(ids: UUID[]): Promise<Item[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Item)
|
const repository = this.getEntityManager().getRepository(Item)
|
||||||
return await repository.find({ id: ids })
|
const results = await repository.find({ id: ids })
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get items by IDs: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get items by IDs: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
@ -26,7 +32,10 @@ class ItemRepository extends BaseRepository {
|
|||||||
async getAll(): Promise<Item[]> {
|
async getAll(): Promise<Item[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Item)
|
const repository = this.getEntityManager().getRepository(Item)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get all items: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get all items: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return []
|
return []
|
||||||
|
@ -6,9 +6,10 @@ class MapEventTileRepository extends BaseRepository {
|
|||||||
async getAll(id: UUID): Promise<MapEventTile[]> {
|
async getAll(id: UUID): Promise<MapEventTile[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(MapEventTile)
|
const repository = this.getEntityManager().getRepository(MapEventTile)
|
||||||
return await repository.find({
|
const results = await repository.find({ map: id })
|
||||||
map: id
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
})
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get map event tiles: ${error.message}`)
|
this.logger.error(`Failed to get map event tiles: ${error.message}`)
|
||||||
return []
|
return []
|
||||||
@ -18,11 +19,14 @@ class MapEventTileRepository extends BaseRepository {
|
|||||||
async getEventTileByMapIdAndPosition(mapId: UUID, positionX: number, positionY: number) {
|
async getEventTileByMapIdAndPosition(mapId: UUID, positionX: number, positionY: number) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(MapEventTile)
|
const repository = this.getEntityManager().getRepository(MapEventTile)
|
||||||
return await repository.findOne({
|
const result = await repository.findOne({
|
||||||
map: mapId,
|
map: mapId,
|
||||||
positionX: positionX,
|
positionX: positionX,
|
||||||
positionY: positionY
|
positionY: positionY
|
||||||
})
|
})
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get map event tile: ${error.message}`)
|
this.logger.error(`Failed to get map event tile: ${error.message}`)
|
||||||
return null
|
return null
|
||||||
|
@ -6,7 +6,10 @@ class MapObjectRepository extends BaseRepository {
|
|||||||
async getById(id: UUID): Promise<MapObject | null> {
|
async getById(id: UUID): Promise<MapObject | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(MapObject)
|
const repository = this.getEntityManager().getRepository(MapObject)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@ -15,7 +18,10 @@ class MapObjectRepository extends BaseRepository {
|
|||||||
async getAll(): Promise<MapObject[]> {
|
async getAll(): Promise<MapObject[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(MapObject)
|
const repository = this.getEntityManager().getRepository(MapObject)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,10 @@ class MapRepository extends BaseRepository {
|
|||||||
async getFirst(): Promise<Map | null> {
|
async getFirst(): Promise<Map | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Map)
|
const repository = this.getEntityManager().getRepository(Map)
|
||||||
return await repository.findOne({ id: { $exists: true } })
|
const result = await repository.findOne({ id: { $exists: true } })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get first map: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get first map: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -18,7 +21,10 @@ class MapRepository extends BaseRepository {
|
|||||||
async getAll(): Promise<Map[]> {
|
async getAll(): Promise<Map[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Map)
|
const repository = this.getEntityManager().getRepository(Map)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get all map: ${error.message}`)
|
this.logger.error(`Failed to get all map: ${error.message}`)
|
||||||
return []
|
return []
|
||||||
@ -41,7 +47,10 @@ class MapRepository extends BaseRepository {
|
|||||||
async getEventTiles(id: UUID): Promise<MapEventTile[]> {
|
async getEventTiles(id: UUID): Promise<MapEventTile[]> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(MapEventTile)
|
const repository = this.getEntityManager().getRepository(MapEventTile)
|
||||||
return await repository.find({ map: id })
|
const results = await repository.find({ map: id })
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get map event tiles: ${error.message}`)
|
this.logger.error(`Failed to get map event tiles: ${error.message}`)
|
||||||
return []
|
return []
|
||||||
@ -51,26 +60,19 @@ class MapRepository extends BaseRepository {
|
|||||||
async getFirstEventTile(mapId: UUID, positionX: number, positionY: number): Promise<MapEventTile | null> {
|
async getFirstEventTile(mapId: UUID, positionX: number, positionY: number): Promise<MapEventTile | null> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(MapEventTile)
|
const repository = this.getEntityManager().getRepository(MapEventTile)
|
||||||
return await repository.findOne({
|
const result = await repository.findOne({
|
||||||
map: mapId,
|
map: mapId,
|
||||||
positionX: positionX,
|
positionX: positionX,
|
||||||
positionY: positionY
|
positionY: positionY
|
||||||
})
|
})
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get map event tile: ${error.message}`)
|
this.logger.error(`Failed to get map event tile: ${error.message}`)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async getMapObjects(id: UUID): Promise<MapObject[]> {
|
|
||||||
try {
|
|
||||||
const repository = this.getEntityManager().getRepository(MapObject)
|
|
||||||
return await repository.find({ map: id })
|
|
||||||
} catch (error: any) {
|
|
||||||
this.logger.error(`Failed to get map objects: ${error.message}`)
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default MapRepository
|
export default MapRepository
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { BaseRepository } from '#application/base/baseRepository' // Import the global Prisma instance
|
import { BaseRepository } from '#application/base/baseRepository'
|
||||||
import { UUID } from '#application/types'
|
import { UUID } from '#application/types'
|
||||||
import { PasswordResetToken } from '#entities/passwordResetToken'
|
import { PasswordResetToken } from '#entities/passwordResetToken'
|
||||||
|
|
||||||
@ -6,7 +6,10 @@ class PasswordResetTokenRepository extends BaseRepository {
|
|||||||
async getById(id: UUID): Promise<any> {
|
async getById(id: UUID): Promise<any> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(PasswordResetToken)
|
const repository = this.getEntityManager().getRepository(PasswordResetToken)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// Handle error
|
// Handle error
|
||||||
this.logger.error(`Failed to get password reset token by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get password reset token by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
@ -16,9 +19,12 @@ class PasswordResetTokenRepository extends BaseRepository {
|
|||||||
async getByUserId(userId: UUID): Promise<any> {
|
async getByUserId(userId: UUID): Promise<any> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(PasswordResetToken)
|
const repository = this.getEntityManager().getRepository(PasswordResetToken)
|
||||||
return await repository.findOne({
|
const result = await repository.findOne({
|
||||||
user: userId
|
user: userId
|
||||||
})
|
})
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// Handle error
|
// Handle error
|
||||||
this.logger.error(`Failed to get password reset token by user ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get password reset token by user ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
@ -28,7 +34,10 @@ class PasswordResetTokenRepository extends BaseRepository {
|
|||||||
async getByToken(token: string): Promise<any> {
|
async getByToken(token: string): Promise<any> {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(PasswordResetToken)
|
const repository = this.getEntityManager().getRepository(PasswordResetToken)
|
||||||
return await repository.findOne({ token })
|
const result = await repository.findOne({ token })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
// Handle error
|
// Handle error
|
||||||
this.logger.error(`Failed to get password reset token by token: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get password reset token by token: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
|
@ -6,7 +6,10 @@ class SpriteRepository extends BaseRepository {
|
|||||||
async getById(id: UUID, populate?: any) {
|
async getById(id: UUID, populate?: any) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Sprite)
|
const repository = this.getEntityManager().getRepository(Sprite)
|
||||||
return await repository.findOne({ id }, { populate })
|
const result = await repository.findOne({ id }, { populate })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,10 @@ class TileRepository extends BaseRepository {
|
|||||||
async getById(id: UUID) {
|
async getById(id: UUID) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Tile)
|
const repository = this.getEntityManager().getRepository(Tile)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@ -20,9 +23,12 @@ class TileRepository extends BaseRepository {
|
|||||||
async getByIds(ids: UUID[]) {
|
async getByIds(ids: UUID[]) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Tile)
|
const repository = this.getEntityManager().getRepository(Tile)
|
||||||
return await repository.find({
|
const results = await repository.find({
|
||||||
id: ids
|
id: ids
|
||||||
})
|
})
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
@ -31,7 +37,10 @@ class TileRepository extends BaseRepository {
|
|||||||
async getAll() {
|
async getAll() {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Tile)
|
const repository = this.getEntityManager().getRepository(Tile)
|
||||||
return await repository.findAll()
|
const results = await repository.findAll()
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
@ -39,17 +48,20 @@ class TileRepository extends BaseRepository {
|
|||||||
|
|
||||||
async getByMapId(mapId: UUID) {
|
async getByMapId(mapId: UUID) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(Map)
|
const mapRepository = this.getEntityManager().getRepository(Map)
|
||||||
const tileRepository = this.getEntityManager().getRepository(Tile)
|
const tileRepository = this.getEntityManager().getRepository(Tile)
|
||||||
|
|
||||||
const map = await repository.findOne({ id: mapId })
|
const map = await mapRepository.findOne({ id: mapId })
|
||||||
if (!map) return []
|
if (!map) return []
|
||||||
|
|
||||||
const mapTileArray = unduplicateArray(MapService.flattenMapArray(JSON.parse(JSON.stringify(map.tiles))))
|
const mapTileArray = unduplicateArray(MapService.flattenMapArray(JSON.parse(JSON.stringify(map.tiles))))
|
||||||
|
|
||||||
return await tileRepository.find({
|
const results = await tileRepository.find({
|
||||||
id: mapTileArray
|
id: mapTileArray
|
||||||
})
|
})
|
||||||
|
for (const result of results) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return results
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,10 @@ class UserRepository extends BaseRepository {
|
|||||||
async getById(id: UUID) {
|
async getById(id: UUID) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(User)
|
const repository = this.getEntityManager().getRepository(User)
|
||||||
return await repository.findOne({ id })
|
const result = await repository.findOne({ id })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -16,7 +19,10 @@ class UserRepository extends BaseRepository {
|
|||||||
async getByUsername(username: string) {
|
async getByUsername(username: string) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(User)
|
const repository = this.getEntityManager().getRepository(User)
|
||||||
return await repository.findOne({ username })
|
const result = await repository.findOne({ username })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
@ -26,7 +32,10 @@ class UserRepository extends BaseRepository {
|
|||||||
async getByEmail(email: string) {
|
async getByEmail(email: string) {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(User)
|
const repository = this.getEntityManager().getRepository(User)
|
||||||
return await repository.findOne({ email })
|
const result = await repository.findOne({ email })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
return null
|
return null
|
||||||
|
@ -5,7 +5,10 @@ class WorldRepository extends BaseRepository {
|
|||||||
async getFirst() {
|
async getFirst() {
|
||||||
try {
|
try {
|
||||||
const repository = this.getEntityManager().getRepository(World)
|
const repository = this.getEntityManager().getRepository(World)
|
||||||
return await repository.findOne({ date: { $exists: true } })
|
const result = await repository.findOne({ date: { $exists: true } })
|
||||||
|
if (result) result.setEntityManager(this.getEntityManager())
|
||||||
|
|
||||||
|
return result
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Failed to get first world: ${error instanceof Error ? error.message : String(error)}`)
|
this.logger.error(`Failed to get first world: ${error instanceof Error ? error.message : String(error)}`)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user