1
0
forked from noxious/server
noxious_server/src/server.ts
2025-02-12 15:58:37 +01:00

43 lines
1.3 KiB
TypeScript

import 'reflect-metadata'
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 logger = Logger.type(LoggerType.APP)
public async start(): Promise<void> {
try {
// Initialize database
await Database.initialize()
// Initialize managers
await Promise.all([
HttpManager.boot(HttpManager.getAppInstance()),
SocketManager.boot(HttpManager.getServerInstance()),
QueueManager.boot(),
UserManager.boot(),
MapManager.boot(),
DateManager.boot(),
WeatherManager.boot(),
ConsoleManager.boot()
])
} catch (error: any) {
console.error(error)
this.logger.error(`Server failed to start: ${error.message}`)
process.exit(1)
}
}
}
// Start the server
const server = new Server()
server.start().catch(console.error)