@eggjs/dal-plugin
Version:
dal plugin for egg
83 lines • 8.66 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);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
import assert from 'node:assert';
import { AccessLevel, Inject, LoadUnitNameQualifierAttribute, MultiInstanceInfo, MultiInstanceProto, ObjectInitType, } from '@eggjs/core-decorator';
import { EggLoadUnitType } from '@eggjs/tegg-types';
import { LoaderFactory } from '@eggjs/tegg-loader';
import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
import { DataSourceInjectName, DataSourceQualifierAttribute, TableInfoUtil, TableModel } from '@eggjs/dal-decorator';
import { DataSource } from '@eggjs/dal-runtime';
import { TableModelManager } from "./TableModelManager.js";
import { MysqlDataSourceManager } from "./MysqlDataSourceManager.js";
import { SqlMapManager } from "./SqlMapManager.js";
import { TransactionalAOP } from "./TransactionalAOP.js";
let DataSourceDelegate = class DataSourceDelegate extends DataSource {
// @ts-expect-error ignore nerver use
transactionalAOP;
objInfo;
constructor(transactionalAOP, objInfo) {
const dataSourceQualifierValue = objInfo.qualifiers.find((t) => t.attribute === DataSourceQualifierAttribute)?.value;
assert(dataSourceQualifierValue);
const [moduleName, dataSource, clazzName] = dataSourceQualifierValue.split('.');
const tableModel = TableModelManager.instance.get(moduleName, clazzName);
assert(tableModel, `not found table ${dataSourceQualifierValue}`);
const mysqlDataSource = MysqlDataSourceManager.instance.get(moduleName, dataSource);
assert(mysqlDataSource, `not found dataSource ${dataSource} in module ${moduleName}`);
const sqlMap = SqlMapManager.instance.get(moduleName, clazzName);
assert(sqlMap, `not found SqlMap ${clazzName} in module ${moduleName}`);
super(tableModel, mysqlDataSource, sqlMap);
this.transactionalAOP = transactionalAOP;
this.objInfo = objInfo;
}
};
DataSourceDelegate = __decorate([
MultiInstanceProto({
accessLevel: AccessLevel.PUBLIC,
initType: ObjectInitType.SINGLETON,
async getObjects(ctx) {
const config = ModuleConfigUtil.loadModuleConfigSync(ctx.unitPath);
const dataSources = Object.keys(config?.dataSource || {});
const result = [];
const loader = LoaderFactory.createLoader(ctx.unitPath, EggLoadUnitType.MODULE);
const clazzList = await loader.load();
const tableClazzList = clazzList.filter((t) => {
return TableInfoUtil.getIsTable(t);
});
const dataSourceLength = dataSources.length;
for (const dataSource of dataSources) {
const moduleClazzList = tableClazzList.filter((clazz) => {
const tableParams = TableInfoUtil.getTableParams(clazz);
const dataSourceName = tableParams?.dataSourceName ?? 'default';
return dataSourceLength === 1 || dataSourceName === dataSource;
});
for (const clazz of moduleClazzList) {
result.push({
name: DataSourceInjectName,
qualifiers: [
{
attribute: DataSourceQualifierAttribute,
value: `${ctx.moduleName}.${dataSource}.${clazz.name}`,
},
],
});
}
}
return result;
},
}),
__param(0, Inject({ name: 'transactionalAOP' })),
__param(1, MultiInstanceInfo([DataSourceQualifierAttribute, LoadUnitNameQualifierAttribute])),
__metadata("design:paramtypes", [TransactionalAOP, Object])
], DataSourceDelegate);
export { DataSourceDelegate };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRGF0YVNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUNMLFdBQVcsRUFDWCxNQUFNLEVBQ04sOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFHbEIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsNEJBQTRCLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFvQ2xELElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQXNCLFNBQVEsVUFBYTtJQUN0RCxxQ0FBcUM7SUFDN0IsZ0JBQWdCLENBQW1CO0lBQzNDLE9BQU8sQ0FBYTtJQUVwQixZQUN3QyxnQkFBa0MsRUFFeEUsT0FBbUI7UUFFbkIsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssNEJBQTRCLENBQ3BELEVBQUUsS0FBSyxDQUFDO1FBQ1QsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLEdBQUksd0JBQW1DLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLHdCQUF3QixFQUFFLENBQUMsQ0FBQztRQUNsRSxNQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNwRixNQUFNLENBQUMsZUFBZSxFQUFFLHdCQUF3QixVQUFVLGNBQWMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN0RixNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsU0FBUyxjQUFjLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFeEUsS0FBSyxDQUFDLFVBQTJCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0YsQ0FBQTtBQTFCWSxrQkFBa0I7SUFsQzlCLGtCQUFrQixDQUFDO1FBQ2xCLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtRQUMvQixRQUFRLEVBQUUsY0FBYyxDQUFDLFNBQVM7UUFDbEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUE0QztZQUMzRCxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFvQixDQUFDO1lBQ3RGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRCxNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEYsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEMsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1QyxPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDNUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN0RCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN4RCxNQUFNLGNBQWMsR0FBRyxXQUFXLEVBQUUsY0FBYyxJQUFJLFNBQVMsQ0FBQztvQkFDaEUsT0FBTyxnQkFBZ0IsS0FBSyxDQUFDLElBQUksY0FBYyxLQUFLLFVBQVUsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsS0FBSyxNQUFNLEtBQUssSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFDVixJQUFJLEVBQUUsb0JBQW9CO3dCQUMxQixVQUFVLEVBQUU7NEJBQ1Y7Z0NBQ0UsU0FBUyxFQUFFLDRCQUE0QjtnQ0FDdkMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTs2QkFDdkQ7eUJBQ0Y7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztLQUNGLENBQUM7SUFPRyxXQUFBLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7SUFDcEMsV0FBQSxpQkFBaUIsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLDhCQUE4QixDQUFDLENBQUMsQ0FBQTtxQ0FEMUIsZ0JBQWdCO0dBTi9ELGtCQUFrQixDQTBCOUIifQ==