forked from noxious/server
DB init. improvements
This commit is contained in:
@ -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
|
Reference in New Issue
Block a user