1
0
forked from noxious/server

Made database class to call entity manager with

This commit is contained in:
2024-12-24 23:14:08 +01:00
parent cfae96bde8
commit 413a5cbcf5
3 changed files with 57 additions and 26 deletions

49
src/utilities/database.ts Normal file
View File

@ -0,0 +1,49 @@
import { MariaDbDriver, MikroORM } from '@mikro-orm/mariadb'
import { Migrator } from '@mikro-orm/migrations'
import { TsMorphMetadataProvider } from '@mikro-orm/reflection'
import config from '#utilities/config'
import { appLogger } from '#utilities/logger'
export class Database {
private static instance: MikroORM | undefined
private static async init(): Promise<MikroORM> {
try {
const orm = await MikroORM.init({
extensions: [Migrator],
metadataProvider: TsMorphMetadataProvider,
entities: ['./src/entities/**/*.js'],
entitiesTs: ['./src/entities/**/*.ts'],
driver: MariaDbDriver,
dbName: config.DB_NAME,
host: config.DB_HOST,
port: config.DB_PORT,
user: config.DB_USER,
password: config.DB_PASS,
debug: config.ENV !== 'production',
driverOptions: {
allowPublicKeyRetrieval: true
}
})
appLogger.info('MikroORM connected successfully')
return orm
} 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
}
public static async close() {
if (Database.instance) {
await Database.instance.close()
Database.instance = undefined
}
}
}