diff --git a/modules/mysql/src/MySQLModule.ts b/modules/mysql/src/MySQLModule.ts index aaf44486..848dcef3 100644 --- a/modules/mysql/src/MySQLModule.ts +++ b/modules/mysql/src/MySQLModule.ts @@ -9,37 +9,37 @@ import { MikroORM } from "@mikro-orm/core" import { type MySqlDriver } from "@mikro-orm/mysql" import databaseConfig from "./config/mikro-orm.config.js" -function createDatabaseClient(): Promise { - return MikroORM.init(databaseConfig) -} - export class MySQLModule extends Module implements ModuleListenerDatabaseInterface { + #orm: Promise> | undefined + public async hasPendingMigrations(): Promise { - const orm = await createDatabaseClient() + const orm = await this.getOrCreateDatabaseClient() const migrator = orm.getMigrator() const migrations = await migrator.getPendingMigrations() - await orm.close(true) - return migrations.length > 0 } public async runPendingMigrations(): Promise { - const orm = await createDatabaseClient() + const orm = await this.getOrCreateDatabaseClient() const migrator = orm.getMigrator() await migrator.up() - - return orm.close(true) } public async notifyAnalysisDone(report: GenericReport): Promise { - const orm = await createDatabaseClient() + const orm = await this.getOrCreateDatabaseClient() const reportEntity = new ReportEntity(report) await orm.em.persistAndFlush(reportEntity) - return orm.close(true) + console.log("entity persisted and flushed") + + return orm.close() + } + + private async getOrCreateDatabaseClient(): Promise> { + return this.#orm ?? MikroORM.init(databaseConfig) } }