38 lines
985 B
TypeScript
38 lines
985 B
TypeScript
import { EntityManager } from '@mikro-orm/core'
|
|
import { MikroORM } from '@mikro-orm/mysql'
|
|
|
|
import { appLogger } from './logger'
|
|
import config from '../../mikro-orm.config'
|
|
|
|
class Database {
|
|
private static orm: MikroORM
|
|
private static em: EntityManager
|
|
|
|
public static async initialize(): Promise<void> {
|
|
try {
|
|
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 getORM(): MikroORM {
|
|
if (!Database.orm) {
|
|
throw new Error('Database not initialized. Call Database.initialize() first.')
|
|
}
|
|
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
|