@mwcp/paradedb
Version:
ParadeDb JavaScript Client Library Component for Midway.js
113 lines • 4.27 kB
JavaScript
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