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 { 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