1
0
forked from noxious/server

DB init. improvements

This commit is contained in:
2024-12-27 19:03:05 +01:00
parent 474683082d
commit bd85908014
4 changed files with 46 additions and 76 deletions

View File

@ -1,28 +1,36 @@
// import { MikroORM } from '@mikro-orm/mariadb'
import { MikroORM } from '@mikro-orm/mysql'
import { EntityManager } from '@mikro-orm/core'
import { appLogger } from './logger'
import config from '../../mikro-orm.config'
/**
* Singleton class for initializing and managing the database connection
*/
export class Database {
private static instance: MikroORM | undefined
class Database {
private static orm: MikroORM
private static em: EntityManager
private static async init(): Promise<MikroORM> {
public static async initialize(): Promise<void> {
try {
return await MikroORM.init(config)
Database.orm = await MikroORM.init(config)
Database.em = Database.orm.em.fork()
appLogger.info('Database connection initialized')
} catch (error) {
appLogger.error(`MikroORM connection failed: ${error}`)
throw error
}
}
public static async getInstance(): Promise<MikroORM> {
if (!Database.instance) {
Database.instance = await Database.init()
public static getORM(): MikroORM {
if (!Database.orm) {
throw new Error('Database not initialized. Call Database.initialize() first.')
}
return Database.instance
return Database.orm
}
public static getEntityManager(): EntityManager {
if (!Database.em) {
throw new Error('Database not initialized. Call Database.initialize() first.')
}
return Database.em
}
}
export default Database