@eggjs/tegg-dal-plugin
Version:
dal plugin for egg
60 lines • 4.92 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MysqlDataSourceManager = void 0;
const dal_runtime_1 = require("@eggjs/dal-runtime");
const node_crypto_1 = __importDefault(require("node:crypto"));
class MysqlDataSourceManager {
constructor() {
this.dataSourceIndices = new Map();
this.dataSources = new Map();
}
get(moduleName, dataSourceName) {
var _a;
const dataSourceIndex = (_a = this.dataSourceIndices.get(moduleName)) === null || _a === void 0 ? void 0 : _a.get(dataSourceName);
if (dataSourceIndex) {
return this.dataSources.get(dataSourceIndex);
}
}
async createDataSource(moduleName, dataSourceName, config) {
const { logger, ...dsConfig } = config || {};
const dataSourceConfig = {
...dsConfig,
name: dataSourceName,
};
const index = MysqlDataSourceManager.createDataSourceKey(dataSourceConfig);
let dataSource = this.dataSources.get(index);
if (!dataSource) {
dataSource = new dal_runtime_1.MysqlDataSource({ ...dataSourceConfig, logger });
this.dataSources.set(index, dataSource);
}
let moduledataSourceIndices = this.dataSourceIndices.get(moduleName);
if (!moduledataSourceIndices) {
moduledataSourceIndices = new Map();
this.dataSourceIndices.set(moduleName, moduledataSourceIndices);
}
moduledataSourceIndices.set(dataSourceName, index);
await dataSource.ready();
}
clear() {
this.dataSourceIndices.clear();
}
static createDataSourceKey(dataSourceOptions) {
const hash = node_crypto_1.default.createHash('md5');
const keys = Object.keys(dataSourceOptions)
.sort();
for (const key of keys) {
const value = dataSourceOptions[key];
if (value) {
hash.update(key);
hash.update(String(value));
}
}
return hash.digest('hex');
}
}
exports.MysqlDataSourceManager = MysqlDataSourceManager;
MysqlDataSourceManager.instance = new MysqlDataSourceManager();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlzcWxEYXRhU291cmNlTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk15c3FsRGF0YVNvdXJjZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQXdFO0FBQ3hFLDhEQUFpQztBQUVqQyxNQUFhLHNCQUFzQjtJQU1qQztRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsR0FBRyxDQUFDLFVBQWtCLEVBQUUsY0FBc0I7O1FBQzVDLE1BQU0sZUFBZSxHQUFHLE1BQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsMENBQzFELEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxjQUFzQixFQUFFLE1BQXlCO1FBQzFGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxRQUFRO1lBQ1gsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0UsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxJQUFJLDZCQUFlLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLHVCQUF1QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0IsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRW5ELE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsaUJBQW9DO1FBQzdELE1BQU0sSUFBSSxHQUFHLHFCQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDeEMsSUFBSSxFQUFFLENBQUM7UUFDVixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOztBQXpESCx3REEwREM7QUF6RFEsK0JBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUMifQ==