1
0
forked from noxious/server

Made printWidth smaller for better readability, removed redundant services

This commit is contained in:
Dennis Postma 2025-01-04 20:42:32 +01:00
parent ae269be196
commit 9bdafd5026
11 changed files with 49 additions and 78 deletions

View File

@ -3,6 +3,6 @@
"semi": false,
"tabWidth": 2,
"singleQuote": true,
"printWidth": 300,
"printWidth": 200,
"trailingComma": "none"
}

View File

@ -1,4 +1,3 @@
import { EntityManager } from '@mikro-orm/core'
import { MikroORM } from '@mikro-orm/mysql'
import Logger, { LoggerType } from './logger'

View File

@ -152,7 +152,14 @@ export default class InitCommand extends BaseCommand {
.save()
const characterType = new CharacterType()
await characterType.setId('75b70c78-17f0-44c0-a4fa-15043cb95be0').setName('New character type').setGender(CharacterGender.MALE).setRace(CharacterRace.HUMAN).setIsSelectable(true).setSprite(characterSprite).save()
await characterType
.setId('75b70c78-17f0-44c0-a4fa-15043cb95be0')
.setName('New character type')
.setGender(CharacterGender.MALE)
.setRace(CharacterRace.HUMAN)
.setIsSelectable(true)
.setSprite(characterSprite)
.save()
}
private async createCharacterHair(): Promise<void> {

View File

@ -28,7 +28,16 @@ export default class MapObjectUpdateEvent extends BaseEvent {
const mapObject = await mapObjectRepository.getById(data.id)
if (!mapObject) return callback(false)
await mapObject.setName(data.name).setTags(data.tags).setOriginX(data.originX).setOriginY(data.originY).setIsAnimated(data.isAnimated).setFrameRate(data.frameRate).setFrameWidth(data.frameWidth).setFrameHeight(data.frameHeight).save()
await mapObject
.setName(data.name)
.setTags(data.tags)
.setOriginX(data.originX)
.setOriginY(data.originY)
.setIsAnimated(data.isAnimated)
.setFrameRate(data.frameRate)
.setFrameWidth(data.frameWidth)
.setFrameHeight(data.frameHeight)
.save()
return callback(true)
} catch (error) {

View File

@ -96,7 +96,13 @@ export default class MapUpdateEvent extends BaseEvent {
// Create and add new map objects
for (const object of data.placedMapObjects) {
const mapObject = new PlacedMapObject().setMapObject(object.mapObject).setDepth(object.depth).setIsRotated(object.isRotated).setPositionX(object.positionX).setPositionY(object.positionY).setMap(map)
const mapObject = new PlacedMapObject()
.setMapObject(object.mapObject)
.setDepth(object.depth)
.setIsRotated(object.isRotated)
.setPositionX(object.positionX)
.setPositionY(object.positionY)
.setMap(map)
map.placedMapObjects.add(mapObject)
}

View File

@ -89,7 +89,8 @@ class DateManager {
private async saveDate(): Promise<void> {
try {
await WorldService.update({ date: this.currentDate })
const worldRepository = new WorldRepository()
await (await worldRepository.getFirst())?.setDate(this.currentDate).save()
} catch (error) {
this.handleError('Failed to save date', error)
}

View File

@ -113,7 +113,13 @@ class WeatherManager {
private async saveWeather(): Promise<void> {
try {
await WorldService.update(this.weatherState)
const worldRepository = new WorldRepository()
await (await worldRepository.getFirst())
?.setIsRainEnabled(this.weatherState.isRainEnabled)
.setRainPercentage(this.weatherState.rainPercentage)
.setIsFogEnabled(this.weatherState.isFogEnabled)
.setFogDensity(this.weatherState.fogDensity)
.save()
} catch (error) {
this.logError('save', error)
}

View File

@ -7,11 +7,13 @@ import config from '#application/config'
import Database from '#application/database'
import Logger, { LoggerType } from '#application/logger'
import ConsoleManager from '#managers/consoleManager'
import DateManager from '#managers/dateManager'
import HttpManager from '#managers/httpManager'
import MapManager from '#managers/mapManager'
import QueueManager from '#managers/queueManager'
import SocketManager from '#managers/socketManager'
import UserManager from '#managers/userManager'
import WeatherManager from '#managers/weatherManager'
export class Server {
private readonly app: Application
@ -36,7 +38,16 @@ export class Server {
this.logger.info(`Server running on port ${config.PORT}`)
// Initialize managers
await Promise.all([HttpManager.boot(this.app), SocketManager.boot(this.app, this.http), QueueManager.boot(), UserManager.boot(), MapManager.boot(), ConsoleManager.boot()])
await Promise.all([
HttpManager.boot(this.app),
SocketManager.boot(this.app, this.http),
QueueManager.boot(),
UserManager.boot(),
MapManager.boot(),
DateManager.boot(),
WeatherManager.boot(),
ConsoleManager.boot()
])
} catch (error: any) {
this.logger.error(`Server failed to start: ${error.message}`)
process.exit(1)

View File

@ -1,26 +0,0 @@
import { BaseService } from '#application/base/baseService'
import passwordResetTokenRepository from '#repositories/passwordResetTokenRepository'
class PasswordResetTokenService extends BaseService {
/**
* Delete token
* @param token
*/
public async delete(token: string): Promise<boolean> {
try {
const tokenData = await passwordResetTokenRepository.getByToken(token)
if (!tokenData) {
return false
}
await tokenData.delete()
return true
} catch (error: any) {
this.logger.error(`Error deleting password reset token: ${error instanceof Error ? error.message : String(error)}`)
return false
}
}
}
export default new PasswordResetTokenService()

View File

@ -1,8 +1,6 @@
import bcrypt from 'bcryptjs'
import NodeMailer from 'nodemailer'
import PasswordResetTokenService from './passwordResetTokenService' // @TODO: Correctly implement this
import { BaseService } from '#application/base/baseService'
import config from '#application/config'
import { PasswordResetToken } from '#entities/passwordResetToken'
@ -50,8 +48,7 @@ class UserService extends BaseService {
}
const newUser = new User()
newUser.setUsername(username).setEmail(email).setPassword(password)
await newUser.save()
await newUser.setUsername(username).setEmail(email).setPassword(password).save()
return newUser
} catch (error: any) {
@ -81,8 +78,7 @@ class UserService extends BaseService {
// Create new token using MikroORM
const passwordResetToken = new PasswordResetToken()
passwordResetToken.setUser(user).setToken(token)
await passwordResetToken.save()
await passwordResetToken.setUser(user).setToken(token).save()
const transporter = NodeMailer.createTransport({
host: config.SMTP_HOST,

View File

@ -1,38 +0,0 @@
import { BaseService } from '#application/base/baseService'
import { World } from '#entities/world'
import WorldRepository from '#repositories/worldRepository'
class WorldService extends BaseService {
async update(worldData: Partial<World>): Promise<boolean> {
try {
let world = await WorldRepository.getFirst()
if (!world) {
world = new World()
}
world.setDate(worldData.date || new Date())
if (worldData.isRainEnabled) {
world.setIsRainEnabled(worldData.isRainEnabled)
}
if (worldData.rainPercentage) {
world.setRainPercentage(worldData.rainPercentage)
}
if (worldData.isFogEnabled) {
world.setIsFogEnabled(worldData.isFogEnabled)
}
if (worldData.fogDensity) {
world.setFogDensity(worldData.fogDensity)
}
await world.save()
return true
} catch (error: any) {
this.logger.error(`Failed to update world: ${error instanceof Error ? error.message : String(error)}`)
return false
}
}
}
export default new WorldService()