UNPKG

@mwcp/paradedb

Version:

ParadeDb JavaScript Client Library Component for Midway.js

113 lines 4.27 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import assert from 'node:assert'; import { App, ApplicationContext, DataSourceManager, Init, Inject, Logger as _Logger, Singleton, } from '@midwayjs/core'; import { MConfig } from '@mwcp/share'; import { ParadeDb } from 'paradedb'; import { ConfigKey } from './types.js'; let ParadeDbManager = class ParadeDbManager extends DataSourceManager { sourceConfig; app; applicationContext; logger; baseDir; getName() { return 'paradeDbManager'; } async init() { await this.initDataSource(this.sourceConfig, ''); } // #region checkConnected async checkConnected(dataSource) { try { const time = await dataSource.getCurrentTime(); return !!time; } /* c8 ignore next 4 */ catch (ex) { this.logger.error('[KmoreDbSourceManager]: checkConnected(). error ignored', ex); return false; } } // #region createDataSource /** * 创建单个实例 */ async createDataSource(config, dataSourceName) { const dbConfig = this.getDbConfigByDbId(dataSourceName); assert(dbConfig, `createDataSource() failed: ${dataSourceName}`); const inst = new ParadeDb(dataSourceName, dbConfig); assert(inst, `createDataSource() failed: ${dataSourceName}`); const connected = await this.checkConnected(inst); const conn = { ...dbConfig.connection, password: '***' }; assert(connected, `checkConnected() failed: ${dataSourceName}` + JSON.stringify(conn)); // await inst.setTimeZone('Asia/Chongqing') // or 'UTC' this.setDbConfigByDbId(dataSourceName, config); return inst; } // #region destroyDataSource async destroyDataSource(dataSource) { if (await this.checkConnected(dataSource)) { try { await dataSource.destroy(); } /* c8 ignore next 4 */ catch (ex) { this.logger.error(`Destroy knex connection failed with identifier: "${dataSource.dbId}" : \n${ex.message}`); } } this.dataSource.delete(dataSource.dbId); } getDbConfigByDbId(dbId) { assert(dbId); const dbConfig = this.sourceConfig.dataSource[dbId]; return dbConfig; } setDbConfigByDbId(dbId, dbConfig) { assert(dbId); assert(dbConfig); // if (! this.sourceConfig.dataSource) { // this.sourceConfig.dataSource = {} // } this.sourceConfig.dataSource[dbId] = dbConfig; } }; __decorate([ MConfig(ConfigKey.config), __metadata("design:type", Object) ], ParadeDbManager.prototype, "sourceConfig", void 0); __decorate([ App(), __metadata("design:type", Object) ], ParadeDbManager.prototype, "app", void 0); __decorate([ ApplicationContext(), __metadata("design:type", Object) ], ParadeDbManager.prototype, "applicationContext", void 0); __decorate([ _Logger(), __metadata("design:type", Object) ], ParadeDbManager.prototype, "logger", void 0); __decorate([ Inject(), __metadata("design:type", String) ], ParadeDbManager.prototype, "baseDir", void 0); __decorate([ Init(), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], ParadeDbManager.prototype, "init", null); ParadeDbManager = __decorate([ Singleton() ], ParadeDbManager); export { ParadeDbManager }; //# sourceMappingURL=paradedb-manager.js.map