forked from noxious/server
29 lines
721 B
TypeScript
29 lines
721 B
TypeScript
// import { MikroORM } from '@mikro-orm/mariadb'
|
|
import { MikroORM } from '@mikro-orm/mysql'
|
|
|
|
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
|
|
|
|
private static async init(): Promise<MikroORM> {
|
|
try {
|
|
return await MikroORM.init(config)
|
|
} catch (error) {
|
|
appLogger.error(`MikroORM connection failed: ${error}`)
|
|
throw error
|
|
}
|
|
}
|
|
|
|
public static async getInstance(): Promise<MikroORM> {
|
|
if (!Database.instance) {
|
|
Database.instance = await Database.init()
|
|
}
|
|
return Database.instance
|
|
}
|
|
}
|