diff --git a/packages/nocodb-nest/src/app.module.ts b/packages/nocodb-nest/src/app.module.ts index dc2e75360e..ab43f6201a 100644 --- a/packages/nocodb-nest/src/app.module.ts +++ b/packages/nocodb-nest/src/app.module.ts @@ -1,4 +1,9 @@ -import { MiddlewareConsumer, Module, RequestMethod } from '@nestjs/common'; +import { + MiddlewareConsumer, + Module, + RequestMethod, + OnApplicationBootstrap, +} from '@nestjs/common'; import { APP_FILTER } from '@nestjs/core'; import { Connection } from './connection/connection'; import { GlobalExceptionFilter } from './filters/global-exception/global-exception.filter'; @@ -9,6 +14,7 @@ import { UsersModule } from './modules/users/users.module'; import { MetaService } from './meta/meta.service'; import { UtilsModule } from './modules/utils/utils.module'; import { ProjectsModule } from './modules/projects/projects.module'; +import Noco from './Noco'; import { JwtStrategy } from './strategies/jwt.strategy'; import { TablesModule } from './modules/tables/tables.module'; import { ViewsModule } from './modules/views/views.module'; @@ -103,10 +109,27 @@ import { PluginsModule } from './modules/plugins/plugins.module'; ], exports: [Connection, MetaService], }) -export class AppModule { +export class AppModule implements OnApplicationBootstrap { + constructor( + private readonly connection: Connection, + private readonly metaService: MetaService, + ) {} + + // Global Middleware configure(consumer: MiddlewareConsumer) { consumer .apply(GlobalMiddleware) .forRoutes({ path: '*', method: RequestMethod.ALL }); } + + // app init + async onApplicationBootstrap(): Promise { + await this.connection.init(); + await this.metaService.init(); + + // todo: remove + // temporary hack + Noco._ncMeta = this.metaService; + Noco.config = this.connection.config; + } } diff --git a/packages/nocodb-nest/src/connection/connection.ts b/packages/nocodb-nest/src/connection/connection.ts index 996adbff2d..4efe799365 100644 --- a/packages/nocodb-nest/src/connection/connection.ts +++ b/packages/nocodb-nest/src/connection/connection.ts @@ -6,7 +6,7 @@ import NcConfigFactory from '../utils/NcConfigFactory'; @Global() @Injectable() -export class Connection implements OnModuleInit { +export class Connection { private knex: knex.Knex; private _config: any; @@ -19,7 +19,7 @@ export class Connection implements OnModuleInit { } // init metadb connection - async onModuleInit(): Promise { + async init(): Promise { this._config = await NcConfigFactory.make(); this.knex = XKnex({ ...this._config.meta.db, diff --git a/packages/nocodb-nest/src/meta/meta.service.ts b/packages/nocodb-nest/src/meta/meta.service.ts index dae0f8c84e..ff1120c546 100644 --- a/packages/nocodb-nest/src/meta/meta.service.ts +++ b/packages/nocodb-nest/src/meta/meta.service.ts @@ -180,7 +180,7 @@ const nanoidv2 = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz', 14); @Global() @Injectable() -export class MetaService implements OnApplicationBootstrap { +export class MetaService { constructor(private metaConnection: Connection) {} public get connection() { @@ -346,21 +346,6 @@ export class MetaService implements OnApplicationBootstrap { return `${prefix}${nanoidv2()}`; } - async onApplicationBootstrap(): Promise { - await this.metaInit(); - - // todo: tobe fixed - temporary workaround - Noco._ncMeta = this; - Noco.config = this.metaConnection.config; - } - - - - - - - - // @@ -1051,8 +1036,7 @@ export class MetaService implements OnApplicationBootstrap { return this.metaInsert(project_id, dbAlias, target, data); } - public async metaInit(): Promise { - + public async init(): Promise { NocoCache.init(); await this.connection.migrate.latest({ migrationSource: new XcMigrationSource(),