From 32e97a417c1287242ea610c00287ff3c7694c3cb Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Tue, 7 Mar 2023 18:55:30 +0800 Subject: [PATCH] refactor(nocodb): make it return promise --- packages/nocodb/src/lib/models/Base.ts | 5 +- .../src/lib/utils/common/NcConnectionMgrv2.ts | 103 ++++-------------- 2 files changed, 25 insertions(+), 83 deletions(-) diff --git a/packages/nocodb/src/lib/models/Base.ts b/packages/nocodb/src/lib/models/Base.ts index 96a396dcc7..3aaf43eb51 100644 --- a/packages/nocodb/src/lib/models/Base.ts +++ b/packages/nocodb/src/lib/models/Base.ts @@ -234,14 +234,15 @@ export default class Base implements BaseType { } } - public getConnectionConfig(): any { + // NC_DATA_DB is not available in community version + // make it return Promise to avoid conflicts + public getConnectionConfig(): Promise { if (this.is_meta) { const metaConfig = Noco.getConfig()?.meta?.db; const config = { ...metaConfig }; if (config.client === 'sqlite3') { config.connection = metaConfig; } - return config; } diff --git a/packages/nocodb/src/lib/utils/common/NcConnectionMgrv2.ts b/packages/nocodb/src/lib/utils/common/NcConnectionMgrv2.ts index bb55673cf6..29eaa5c94f 100644 --- a/packages/nocodb/src/lib/utils/common/NcConnectionMgrv2.ts +++ b/packages/nocodb/src/lib/utils/common/NcConnectionMgrv2.ts @@ -1,10 +1,5 @@ import SqlClientFactory from '../../db/sql-client/lib/SqlClientFactory'; import { XKnex } from '../../db/sql-data-mapper'; -// import { NcConfig } from '../../../interface/config'; -// import fs from 'fs'; -// import Knex from 'knex'; - -// import NcMetaIO from '../meta/NcMetaIO'; import { defaultConnectionConfig, defaultConnectionOptions, @@ -19,12 +14,6 @@ export default class NcConnectionMgrv2 { }; } = {}; - // private static metaKnex: NcMetaIO; - // - // public static setXcMeta(ncMeta: NcMetaIO) { - // this.metaKnex = ncMeta; - // } - public static async destroyAll() { for (const projectId in this.connectionRefs) { for (const baseId in this.connectionRefs[projectId]) { @@ -60,7 +49,9 @@ export default class NcConnectionMgrv2 { } } - public static get(base: Base): XKnex { + // NC_DATA_DB is not available in community version + // make it return Promise to avoid conflicts + public static async get(base: Base): Promise { if (base.is_meta) return Noco.ncMeta.knex; if (this.connectionRefs?.[base.project_id]?.[base.id]) { @@ -68,76 +59,26 @@ export default class NcConnectionMgrv2 { } this.connectionRefs[base.project_id] = this.connectionRefs?.[base.project_id] || {}; - // if (?.prefix && this.metaKnex) { - // this.connectionRefs[projectId][env][dbAlias] = this.metaKnex?.knex; - // } else { - // const connectionConfig = this.getConnectionConfig(config, env, dbAlias); - const connectionConfig = base.getConnectionConfig(); - // - // if ( - // connectionConfig?.connection?.ssl && - // typeof connectionConfig?.connection?.ssl === 'object' - // ) { - // if ( - // connectionConfig.connection.ssl.caFilePath && - // !connectionConfig.connection.ssl.ca - // ) { - // connectionConfig.connection.ssl.ca = fs - // .readFileSync(connectionConfig.connection.ssl.caFilePath) - // .toString(); - // } - // if ( - // connectionConfig.connection.ssl.keyFilePath && - // !connectionConfig.connection.ssl.key - // ) { - // connectionConfig.connection.ssl.key = fs - // .readFileSync(connectionConfig.connection.ssl.keyFilePath) - // .toString(); - // } - // if ( - // connectionConfig.connection.ssl.certFilePath && - // !connectionConfig.connection.ssl.cert - // ) { - // connectionConfig.connection.ssl.cert = fs - // .readFileSync(connectionConfig.connection.ssl.certFilePath) - // .toString(); - // } - // } - // - // const isSqlite = connectionConfig?.client === 'sqlite3'; - // - // if (connectionConfig?.connection?.port) { - // connectionConfig.connection.port = +connectionConfig.connection.port; - // } - this.connectionRefs[base.project_id][base.id] = XKnex( - // isSqlite - // ? (connectionConfig.connection as Knex.Config) - // : - { - ...defaultConnectionOptions, - ...connectionConfig, - connection: { - ...defaultConnectionConfig, - ...connectionConfig.connection, - typeCast(_field, next) { - const res = next(); - if (res instanceof Buffer) { - return [...res] - .map((v) => ('00' + v.toString(16)).slice(-2)) - .join(''); - } - return res; - }, - }, - } as any - ); - // if (isSqlite) { - // this.connectionRefs[projectId][env][dbAlias] - // .raw(`PRAGMA journal_mode=WAL;`) - // .then(() => {}); - // } + const connectionConfig = await base.getConnectionConfig(); + this.connectionRefs[base.project_id][base.id] = XKnex({ + ...defaultConnectionOptions, + ...connectionConfig, + connection: { + ...defaultConnectionConfig, + ...connectionConfig.connection, + typeCast(_field, next) { + const res = next(); + if (res instanceof Buffer) { + return [...res] + .map((v) => ('00' + v.toString(16)).slice(-2)) + .join(''); + } + return res; + }, + }, + } as any); return this.connectionRefs[base.project_id][base.id]; } @@ -153,7 +94,7 @@ export default class NcConnectionMgrv2 { const knex = _knex || this.get(base); return SqlClientFactory.create({ knex, - ...base.getConnectionConfig(), + ...(await base.getConnectionConfig()), }); } }