@eggjs/tegg-dal-plugin 3.62.0 → 4.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +13 -1
  2. package/{app.d.ts → dist/app.d.ts} +2 -2
  3. package/dist/app.js +38 -0
  4. package/dist/index.d.ts +9 -0
  5. package/dist/index.js +10 -0
  6. package/{lib → dist/lib}/DalModuleLoadUnitHook.d.ts +2 -2
  7. package/{lib → dist/lib}/DalModuleLoadUnitHook.js +14 -11
  8. package/{lib → dist/lib}/DalTableEggPrototypeHook.d.ts +2 -2
  9. package/dist/lib/DalTableEggPrototypeHook.js +24 -0
  10. package/{lib → dist/lib}/DataSource.d.ts +2 -2
  11. package/dist/lib/DataSource.js +79 -0
  12. package/{lib → dist/lib}/MysqlDataSourceManager.d.ts +1 -1
  13. package/dist/lib/MysqlDataSourceManager.js +55 -0
  14. package/dist/lib/SqlMapManager.js +23 -0
  15. package/dist/lib/TableModelManager.js +23 -0
  16. package/{lib → dist/lib}/TransactionPrototypeHook.d.ts +2 -2
  17. package/dist/lib/TransactionPrototypeHook.js +56 -0
  18. package/{lib → dist/lib}/TransactionalAOP.d.ts +2 -2
  19. package/dist/lib/TransactionalAOP.js +28 -0
  20. package/dist/types.d.ts +1 -0
  21. package/dist/types.js +2 -0
  22. package/package.json +51 -35
  23. package/app/extend/application.d.ts +0 -5
  24. package/app/extend/application.js +0 -9
  25. package/app.js +0 -38
  26. package/index.d.ts +0 -1
  27. package/index.js +0 -6
  28. package/lib/DalTableEggPrototypeHook.js +0 -24
  29. package/lib/DataSource.js +0 -85
  30. package/lib/MysqlDataSourceManager.js +0 -60
  31. package/lib/SqlMapManager.js +0 -26
  32. package/lib/TableModelManager.js +0 -26
  33. package/lib/TransactionPrototypeHook.js +0 -60
  34. package/lib/TransactionalAOP.js +0 -30
  35. package/typings/index.d.ts +0 -3
  36. /package/{lib → dist/lib}/SqlMapManager.d.ts +0 -0
  37. /package/{lib → dist/lib}/TableModelManager.d.ts +0 -0
package/README.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @eggjs/tegg-dal-plugin
2
2
 
3
+ [![NPM version][npm-image]][npm-url]
4
+ [![Known Vulnerabilities][snyk-image]][snyk-url]
5
+ [![npm download][download-image]][download-url]
6
+ [![Node.js Version](https://img.shields.io/node/v/@eggjs/tegg-dal-plugin.svg?style=flat)](https://nodejs.org/en/download/)
7
+
8
+ [npm-image]: https://img.shields.io/npm/v/@eggjs/tegg-dal-plugin.svg?style=flat-square
9
+ [npm-url]: https://npmjs.org/package/@eggjs/tegg-dal-plugin
10
+ [snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-dal-plugin/badge.svg?style=flat-square
11
+ [snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-dal-plugin
12
+ [download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-dal-plugin.svg?style=flat-square
13
+ [download-url]: https://npmjs.org/package/@eggjs/tegg-dal-plugin
14
+
3
15
  @eggjs/tegg-dal-plugin 支持使用注解的方式来开发 egg 中的 dal。
4
16
 
5
17
  ## egg 模式
@@ -567,7 +579,7 @@ export class FooRepository {
567
579
 
568
580
  ```ts
569
581
  // dal/extension/FooExtension.ts
570
- import { SqlMap, SqlType } from '@eggjs/tegg/dal';
582
+ import { type SqlMap, SqlType } from '@eggjs/tegg/dal';
571
583
 
572
584
  export default {
573
585
  findByName: {
@@ -1,5 +1,5 @@
1
- import { Application } from 'egg';
2
- export default class ControllerAppBootHook {
1
+ import type { Application, ILifecycleBoot } from 'egg';
2
+ export default class DalAppBootHook implements ILifecycleBoot {
3
3
  private readonly app;
4
4
  private dalTableEggPrototypeHook;
5
5
  private dalModuleLoadUnitHook;
package/dist/app.js ADDED
@@ -0,0 +1,38 @@
1
+ import { DalTableEggPrototypeHook } from "./lib/DalTableEggPrototypeHook.js";
2
+ import { MysqlDataSourceManager } from "./lib/MysqlDataSourceManager.js";
3
+ import { SqlMapManager } from "./lib/SqlMapManager.js";
4
+ import { TableModelManager } from "./lib/TableModelManager.js";
5
+ import { DalModuleLoadUnitHook } from "./lib/DalModuleLoadUnitHook.js";
6
+ import { TransactionPrototypeHook } from "./lib/TransactionPrototypeHook.js";
7
+ export default class DalAppBootHook {
8
+ app;
9
+ dalTableEggPrototypeHook;
10
+ dalModuleLoadUnitHook;
11
+ transactionPrototypeHook;
12
+ constructor(app) {
13
+ this.app = app;
14
+ }
15
+ configWillLoad() {
16
+ this.dalModuleLoadUnitHook = new DalModuleLoadUnitHook(this.app.config.env, this.app.moduleConfigs);
17
+ this.dalTableEggPrototypeHook = new DalTableEggPrototypeHook(this.app.logger);
18
+ this.transactionPrototypeHook = new TransactionPrototypeHook(this.app.moduleConfigs, this.app.logger);
19
+ this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.dalTableEggPrototypeHook);
20
+ this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.transactionPrototypeHook);
21
+ this.app.loadUnitLifecycleUtil.registerLifecycle(this.dalModuleLoadUnitHook);
22
+ }
23
+ async beforeClose() {
24
+ if (this.dalTableEggPrototypeHook) {
25
+ this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.dalTableEggPrototypeHook);
26
+ }
27
+ if (this.dalModuleLoadUnitHook) {
28
+ this.app.loadUnitLifecycleUtil.deleteLifecycle(this.dalModuleLoadUnitHook);
29
+ }
30
+ if (this.transactionPrototypeHook) {
31
+ this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.transactionPrototypeHook);
32
+ }
33
+ MysqlDataSourceManager.instance.clear();
34
+ SqlMapManager.instance.clear();
35
+ TableModelManager.instance.clear();
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFjO0lBQ2hCLEdBQUcsQ0FBYztJQUMxQix3QkFBd0IsQ0FBMkI7SUFDbkQscUJBQXFCLENBQXdCO0lBQzdDLHdCQUF3QixDQUEyQjtJQUUzRCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,9 @@
1
+ import './types.ts';
2
+ export * from './lib/DalModuleLoadUnitHook.ts';
3
+ export * from './lib/DalTableEggPrototypeHook.ts';
4
+ export * from './lib/DataSource.ts';
5
+ export * from './lib/MysqlDataSourceManager.ts';
6
+ export * from './lib/SqlMapManager.ts';
7
+ export * from './lib/TableModelManager.ts';
8
+ export * from './lib/TransactionalAOP.ts';
9
+ export * from './lib/TransactionPrototypeHook.ts';
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ import "./types.js";
2
+ export * from "./lib/DalModuleLoadUnitHook.js";
3
+ export * from "./lib/DalTableEggPrototypeHook.js";
4
+ export * from "./lib/DataSource.js";
5
+ export * from "./lib/MysqlDataSourceManager.js";
6
+ export * from "./lib/SqlMapManager.js";
7
+ export * from "./lib/TableModelManager.js";
8
+ export * from "./lib/TransactionalAOP.js";
9
+ export * from "./lib/TransactionPrototypeHook.js";
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDIn0=
@@ -1,5 +1,5 @@
1
- import { LifecycleHook, Logger, ModuleConfigHolder } from '@eggjs/tegg';
2
- import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg/helper';
1
+ import { type LifecycleHook, type Logger, type ModuleConfigHolder } from '@eggjs/tegg';
2
+ import { type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/tegg/helper';
3
3
  export declare class DalModuleLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
4
4
  private readonly moduleConfigs;
5
5
  private readonly env;
@@ -1,9 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DalModuleLoadUnitHook = void 0;
4
- const MysqlDataSourceManager_1 = require("./MysqlDataSourceManager");
5
- const dal_runtime_1 = require("@eggjs/dal-runtime");
6
- class DalModuleLoadUnitHook {
1
+ import {} from '@eggjs/tegg';
2
+ import { DatabaseForker } from '@eggjs/dal-runtime';
3
+ import {} from '@eggjs/tegg/helper';
4
+ import { MysqlDataSourceManager } from "./MysqlDataSourceManager.js";
5
+ export class DalModuleLoadUnitHook {
6
+ moduleConfigs;
7
+ env;
8
+ logger;
7
9
  constructor(env, moduleConfigs, logger) {
8
10
  this.env = env;
9
11
  this.moduleConfigs = moduleConfigs;
@@ -22,19 +24,20 @@ class DalModuleLoadUnitHook {
22
24
  name,
23
25
  logger: this.logger,
24
26
  };
25
- const forker = new dal_runtime_1.DatabaseForker(this.env, dataSourceOptions);
27
+ const forker = new DatabaseForker(this.env, dataSourceOptions);
26
28
  if (forker.shouldFork()) {
27
29
  await forker.forkDb(loadUnit.unitPath);
28
30
  }
29
31
  try {
30
- await MysqlDataSourceManager_1.MysqlDataSourceManager.instance.createDataSource(loadUnit.name, name, dataSourceOptions);
32
+ await MysqlDataSourceManager.instance.createDataSource(loadUnit.name, name, dataSourceOptions);
31
33
  }
32
34
  catch (e) {
33
- e.message = `create module ${loadUnit.name} datasource ${name} failed: ` + e.message;
35
+ if (e instanceof Error) {
36
+ e.message = `create module ${loadUnit.name} datasource ${name} failed: ${e.message}`;
37
+ }
34
38
  throw e;
35
39
  }
36
40
  }));
37
41
  }
38
42
  }
39
- exports.DalModuleLoadUnitHook = DalModuleLoadUnitHook;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFsTW9kdWxlTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRGFsTW9kdWxlTG9hZFVuaXRIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFrRTtBQUVsRSxvREFBdUU7QUFHdkUsTUFBYSxxQkFBcUI7SUFLaEMsWUFBWSxHQUFXLEVBQUUsYUFBaUQsRUFBRSxNQUFlO1FBQ3pGLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBMkIsRUFBRSxRQUFrQjtRQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0I7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQW1ELGtCQUFrQixDQUFDLE1BQWMsQ0FBQyxVQUFVLENBQUM7UUFDdEgsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFDOUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBRSxFQUFFLEVBQUU7WUFDaEYsTUFBTSxpQkFBaUIsR0FBRztnQkFDeEIsR0FBRyxNQUFNO2dCQUNULElBQUk7Z0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCLENBQUM7WUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9ELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELElBQUksQ0FBQztnQkFDSCxNQUFNLCtDQUFzQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pHLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLFFBQVEsQ0FBQyxJQUFJLGVBQWUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDckYsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQW5DRCxzREFtQ0MifQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFsTW9kdWxlTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9EYWxNb2R1bGVMb2FkVW5pdEhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0RCxNQUFNLGFBQWEsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUEwQixNQUFNLG9CQUFvQixDQUFDO0FBQzVFLE9BQU8sRUFBZ0QsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRSxNQUFNLE9BQU8scUJBQXFCO0lBQ2YsYUFBYSxDQUFxQztJQUNsRCxHQUFHLENBQVM7SUFDWixNQUFNLENBQVU7SUFFakMsWUFBWSxHQUFXLEVBQUUsYUFBaUQsRUFBRSxNQUFlO1FBQ3pGLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBMkIsRUFBRSxRQUFrQjtRQUM3RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0I7WUFBRSxPQUFPO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQW1ELGtCQUFrQixDQUFDLE1BQWMsQ0FBQyxVQUFVLENBQUM7UUFDdEgsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU87UUFDOUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBRSxFQUFFLEVBQUU7WUFDaEYsTUFBTSxpQkFBaUIsR0FBRztnQkFDeEIsR0FBRyxNQUFNO2dCQUNULElBQUk7Z0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ3BCLENBQUM7WUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDL0QsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sc0JBQXNCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDakcsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUM7b0JBQ3ZCLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLFFBQVEsQ0FBQyxJQUFJLGVBQWUsSUFBSSxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkYsQ0FBQztnQkFDRCxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNGIn0=
@@ -1,5 +1,5 @@
1
- import { Logger, LifecycleHook } from '@eggjs/tegg';
2
- import { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg/helper';
1
+ import { type Logger, type LifecycleHook } from '@eggjs/tegg';
2
+ import { type EggPrototype, type EggPrototypeLifecycleContext } from '@eggjs/tegg/helper';
3
3
  export declare class DalTableEggPrototypeHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
4
4
  private readonly logger;
5
5
  constructor(logger: Logger);
@@ -0,0 +1,24 @@
1
+ import {} from '@eggjs/tegg';
2
+ import {} from '@eggjs/tegg/helper';
3
+ import { DaoInfoUtil, TableModel } from '@eggjs/dal-decorator';
4
+ import { SqlMapLoader } from '@eggjs/dal-runtime';
5
+ import { TableModelManager } from "./TableModelManager.js";
6
+ import { SqlMapManager } from "./SqlMapManager.js";
7
+ export class DalTableEggPrototypeHook {
8
+ logger;
9
+ constructor(logger) {
10
+ this.logger = logger;
11
+ }
12
+ async preCreate(ctx) {
13
+ if (!DaoInfoUtil.getIsDao(ctx.clazz)) {
14
+ return;
15
+ }
16
+ const tableClazz = ctx.clazz.clazzModel;
17
+ const tableModel = TableModel.build(tableClazz);
18
+ TableModelManager.instance.set(ctx.loadUnit.name, tableModel);
19
+ const loader = new SqlMapLoader(tableModel, ctx.clazz, this.logger);
20
+ const sqlMap = loader.load();
21
+ SqlMapManager.instance.set(ctx.loadUnit.name, sqlMap);
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFsVGFibGVFZ2dQcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9EYWxUYWJsZUVnZ1Byb3RvdHlwZUhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQXdELE1BQU0sb0JBQW9CLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELE1BQU0sT0FBTyx3QkFBd0I7SUFDbEIsTUFBTSxDQUFTO0lBRWhDLFlBQVksTUFBYztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFpQztRQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUF1QixVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0YifQ==
@@ -1,6 +1,6 @@
1
- import { ObjectInfo } from '@eggjs/tegg';
1
+ import { type ObjectInfo } from '@eggjs/tegg';
2
2
  import { DataSource } from '@eggjs/dal-runtime';
3
- import { TransactionalAOP } from './TransactionalAOP';
3
+ import { TransactionalAOP } from './TransactionalAOP.ts';
4
4
  export declare class DataSourceDelegate<T> extends DataSource<T> {
5
5
  private transactionalAOP;
6
6
  objInfo: ObjectInfo;
@@ -0,0 +1,79 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import assert from 'node:assert';
14
+ import { AccessLevel, Inject, LoadUnitNameQualifierAttribute, MultiInstanceInfo, MultiInstanceProto, ObjectInitType, } from '@eggjs/tegg';
15
+ import { EggLoadUnitType, LoaderFactory, ModuleConfigUtil, } from '@eggjs/tegg/helper';
16
+ import { DataSourceInjectName, DataSourceQualifierAttribute, TableInfoUtil, TableModel, } from '@eggjs/tegg/dal';
17
+ import { DataSource } from '@eggjs/dal-runtime';
18
+ import { TableModelManager } from "./TableModelManager.js";
19
+ import { MysqlDataSourceManager } from "./MysqlDataSourceManager.js";
20
+ import { SqlMapManager } from "./SqlMapManager.js";
21
+ import { TransactionalAOP } from "./TransactionalAOP.js";
22
+ let DataSourceDelegate = class DataSourceDelegate extends DataSource {
23
+ // @ts-expect-error ignore nerver use
24
+ transactionalAOP;
25
+ objInfo;
26
+ constructor(transactionalAOP, objInfo) {
27
+ const dataSourceQualifierValue = objInfo.qualifiers.find(t => t.attribute === DataSourceQualifierAttribute)?.value;
28
+ assert(dataSourceQualifierValue);
29
+ const [moduleName, dataSource, clazzName] = dataSourceQualifierValue.split('.');
30
+ const tableModel = TableModelManager.instance.get(moduleName, clazzName);
31
+ assert(tableModel, `not found table ${dataSourceQualifierValue}`);
32
+ const mysqlDataSource = MysqlDataSourceManager.instance.get(moduleName, dataSource);
33
+ assert(mysqlDataSource, `not found dataSource ${dataSource} in module ${moduleName}`);
34
+ const sqlMap = SqlMapManager.instance.get(moduleName, clazzName);
35
+ assert(sqlMap, `not found SqlMap ${clazzName} in module ${moduleName}`);
36
+ super(tableModel, mysqlDataSource, sqlMap);
37
+ this.transactionalAOP = transactionalAOP;
38
+ this.objInfo = objInfo;
39
+ }
40
+ };
41
+ DataSourceDelegate = __decorate([
42
+ MultiInstanceProto({
43
+ accessLevel: AccessLevel.PUBLIC,
44
+ initType: ObjectInitType.SINGLETON,
45
+ async getObjects(ctx) {
46
+ const config = ModuleConfigUtil.loadModuleConfigSync(ctx.unitPath);
47
+ const dataSources = Object.keys(config?.dataSource || {});
48
+ const result = [];
49
+ const loader = LoaderFactory.createLoader(ctx.unitPath, EggLoadUnitType.MODULE);
50
+ const clazzList = await loader.load();
51
+ const tableClazzList = clazzList.filter(t => {
52
+ return TableInfoUtil.getIsTable(t);
53
+ });
54
+ const dataSourceLength = dataSources.length;
55
+ for (const dataSource of dataSources) {
56
+ const moduleClazzList = tableClazzList.filter(clazz => {
57
+ const tableParams = TableInfoUtil.getTableParams(clazz);
58
+ const dataSourceName = tableParams?.dataSourceName ?? 'default';
59
+ return dataSourceLength === 1 || dataSourceName === dataSource;
60
+ });
61
+ for (const clazz of moduleClazzList) {
62
+ result.push({
63
+ name: DataSourceInjectName,
64
+ qualifiers: [{
65
+ attribute: DataSourceQualifierAttribute,
66
+ value: `${ctx.moduleName}.${dataSource}.${clazz.name}`,
67
+ }],
68
+ });
69
+ }
70
+ }
71
+ return result;
72
+ },
73
+ }),
74
+ __param(0, Inject({ name: 'transactionalAOP' })),
75
+ __param(1, MultiInstanceInfo([DataSourceQualifierAttribute, LoadUnitNameQualifierAttribute])),
76
+ __metadata("design:paramtypes", [TransactionalAOP, Object])
77
+ ], DataSourceDelegate);
78
+ export { DataSourceDelegate };
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRGF0YVNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFFakMsT0FBTyxFQUNMLFdBQVcsRUFBRSxNQUFNLEVBQUUsOEJBQThCLEVBQ25ELGlCQUFpQixFQUNqQixrQkFBa0IsRUFHbEIsY0FBYyxHQUNmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsNEJBQTRCLEVBQzVCLGFBQWEsRUFDYixVQUFVLEdBQ1gsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBa0NsRCxJQUFNLGtCQUFrQixHQUF4QixNQUFNLGtCQUFzQixTQUFRLFVBQWE7SUFDdEQscUNBQXFDO0lBQzdCLGdCQUFnQixDQUFtQjtJQUMzQyxPQUFPLENBQWE7SUFFcEIsWUFDd0MsZ0JBQWtDLEVBQ2EsT0FBbUI7UUFDeEcsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssNEJBQTRCLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbkgsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENB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
@@ -1,4 +1,4 @@
1
- import { DataSourceOptions, MysqlDataSource } from '@eggjs/dal-runtime';
1
+ import { type DataSourceOptions, MysqlDataSource } from '@eggjs/dal-runtime';
2
2
  export declare class MysqlDataSourceManager {
3
3
  static instance: MysqlDataSourceManager;
4
4
  private readonly dataSourceIndices;
@@ -0,0 +1,55 @@
1
+ import crypto from 'node:crypto';
2
+ import { MysqlDataSource } from '@eggjs/dal-runtime';
3
+ export class MysqlDataSourceManager {
4
+ static instance = new MysqlDataSourceManager();
5
+ dataSourceIndices;
6
+ dataSources;
7
+ constructor() {
8
+ this.dataSourceIndices = new Map();
9
+ this.dataSources = new Map();
10
+ }
11
+ get(moduleName, dataSourceName) {
12
+ const dataSourceIndex = this.dataSourceIndices.get(moduleName)
13
+ ?.get(dataSourceName);
14
+ if (dataSourceIndex) {
15
+ return this.dataSources.get(dataSourceIndex);
16
+ }
17
+ }
18
+ async createDataSource(moduleName, dataSourceName, config) {
19
+ const { logger, ...dsConfig } = config || {};
20
+ const dataSourceConfig = {
21
+ ...dsConfig,
22
+ name: dataSourceName,
23
+ };
24
+ const index = MysqlDataSourceManager.createDataSourceKey(dataSourceConfig);
25
+ let dataSource = this.dataSources.get(index);
26
+ if (!dataSource) {
27
+ dataSource = new MysqlDataSource({ ...dataSourceConfig, logger });
28
+ this.dataSources.set(index, dataSource);
29
+ }
30
+ let moduleDataSourceIndices = this.dataSourceIndices.get(moduleName);
31
+ if (!moduleDataSourceIndices) {
32
+ moduleDataSourceIndices = new Map();
33
+ this.dataSourceIndices.set(moduleName, moduleDataSourceIndices);
34
+ }
35
+ moduleDataSourceIndices.set(dataSourceName, index);
36
+ await dataSource.ready();
37
+ }
38
+ clear() {
39
+ this.dataSourceIndices.clear();
40
+ }
41
+ static createDataSourceKey(dataSourceOptions) {
42
+ const hash = crypto.createHash('md5');
43
+ const keys = Object.keys(dataSourceOptions)
44
+ .sort();
45
+ for (const key of keys) {
46
+ const value = dataSourceOptions[key];
47
+ if (value) {
48
+ hash.update(key);
49
+ hash.update(String(value));
50
+ }
51
+ }
52
+ return hash.digest('hex');
53
+ }
54
+ }
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlzcWxEYXRhU291cmNlTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvTXlzcWxEYXRhU291cmNlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUEwQixlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3RSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBRTlCLGlCQUFpQixDQUE0RjtJQUM3RyxXQUFXLENBQW9EO0lBRWhGO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxjQUFzQjtRQUM1QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUM1RCxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxjQUFzQixFQUFFLE1BQXlCO1FBQzFGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxRQUFRO1lBQ1gsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0UsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM3Qix1QkFBdUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbkQsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBb0M7UUFDN0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2FBQ3hDLElBQUksRUFBRSxDQUFDO1FBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUE4QixDQUFDLENBQUM7WUFDaEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUMifQ==
@@ -0,0 +1,23 @@
1
+ import { TableSqlMap } from '@eggjs/dal-runtime';
2
+ export class SqlMapManager {
3
+ static instance = new SqlMapManager();
4
+ sqlMaps;
5
+ constructor() {
6
+ this.sqlMaps = new Map();
7
+ }
8
+ get(moduleName, clazzName) {
9
+ return this.sqlMaps.get(moduleName)?.get(clazzName);
10
+ }
11
+ set(moduleName, sqlMap) {
12
+ let tables = this.sqlMaps.get(moduleName);
13
+ if (!tables) {
14
+ tables = new Map();
15
+ this.sqlMaps.set(moduleName, tables);
16
+ }
17
+ tables.set(sqlMap.name, sqlMap);
18
+ }
19
+ clear() {
20
+ this.sqlMaps.clear();
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsTWFwTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvU3FsTWFwTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBRTlCLE9BQU8sQ0FBd0Q7SUFFdkU7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxNQUFtQjtRQUN6QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQyJ9
@@ -0,0 +1,23 @@
1
+ import { TableModel } from '@eggjs/dal-decorator';
2
+ export class TableModelManager {
3
+ static instance = new TableModelManager();
4
+ tableModels;
5
+ constructor() {
6
+ this.tableModels = new Map();
7
+ }
8
+ get(moduleName, clazzName) {
9
+ return this.tableModels.get(moduleName)?.get(clazzName);
10
+ }
11
+ set(moduleName, tableModel) {
12
+ let tables = this.tableModels.get(moduleName);
13
+ if (!tables) {
14
+ tables = new Map();
15
+ this.tableModels.set(moduleName, tables);
16
+ }
17
+ tables.set(tableModel.clazz.name, tableModel);
18
+ }
19
+ clear() {
20
+ this.tableModels.clear();
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVNb2RlbE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1RhYmxlTW9kZWxNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBRWxDLFdBQVcsQ0FBdUQ7SUFFMUU7UUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUFzQjtRQUM1QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUMifQ==
@@ -1,5 +1,5 @@
1
- import { LifecycleHook, ModuleConfigHolder, Logger } from '@eggjs/tegg';
2
- import { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
1
+ import { type LifecycleHook, type ModuleConfigHolder, type Logger } from '@eggjs/tegg';
2
+ import { type EggPrototype, type EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
3
3
  export declare class TransactionPrototypeHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
4
4
  private readonly moduleConfigs;
5
5
  private readonly logger;
@@ -0,0 +1,56 @@
1
+ import assert from 'node:assert';
2
+ import {} from '@eggjs/tegg';
3
+ import {} from '@eggjs/tegg-metadata';
4
+ import { PropagationType, TransactionMetaBuilder } from '@eggjs/tegg/transaction';
5
+ import { Pointcut } from '@eggjs/tegg/aop';
6
+ import { TransactionalAOP } from "./TransactionalAOP.js";
7
+ import { MysqlDataSourceManager } from "./MysqlDataSourceManager.js";
8
+ export class TransactionPrototypeHook {
9
+ moduleConfigs;
10
+ logger;
11
+ constructor(moduleConfigs, logger) {
12
+ this.moduleConfigs = moduleConfigs;
13
+ this.logger = logger;
14
+ }
15
+ async preCreate(ctx) {
16
+ const builder = new TransactionMetaBuilder(ctx.clazz);
17
+ const transactionMetadataList = builder.build();
18
+ if (transactionMetadataList.length < 1) {
19
+ return;
20
+ }
21
+ const moduleName = ctx.loadUnit.name;
22
+ for (const transactionMetadata of transactionMetadataList) {
23
+ const clazzName = `${moduleName}.${ctx.clazz.name}.${String(transactionMetadata.method)}`;
24
+ const datasourceConfigs = this.moduleConfigs[moduleName]?.config?.dataSource || {};
25
+ let datasourceName;
26
+ if (transactionMetadata.datasourceName) {
27
+ assert(datasourceConfigs[transactionMetadata.datasourceName], `method ${clazzName} specified datasource ${transactionMetadata.datasourceName} not exists`);
28
+ datasourceName = transactionMetadata.datasourceName;
29
+ this.logger.info(`use datasource [${transactionMetadata.datasourceName}] for class ${clazzName}`);
30
+ }
31
+ else {
32
+ const dataSources = Object.keys(datasourceConfigs);
33
+ if (dataSources.length === 1) {
34
+ datasourceName = dataSources[0];
35
+ }
36
+ else {
37
+ throw new Error(`method ${clazzName} not specified datasource, module ${moduleName} has multi datasource, should specify datasource name`);
38
+ }
39
+ this.logger.info(`use default datasource ${dataSources[0]} for class ${clazzName}`);
40
+ }
41
+ const adviceParams = {
42
+ propagation: transactionMetadata.propagation,
43
+ dataSourceGetter: () => {
44
+ const mysqlDataSource = MysqlDataSourceManager.instance.get(moduleName, datasourceName);
45
+ if (!mysqlDataSource) {
46
+ throw new Error(`method ${clazzName} not found datasource ${datasourceName}`);
47
+ }
48
+ return mysqlDataSource;
49
+ },
50
+ };
51
+ assert(adviceParams.propagation === PropagationType.REQUIRED, 'Transactional propagation only support required for now');
52
+ Pointcut(TransactionalAOP, { adviceParams })(ctx.clazz.prototype, transactionMetadata.method);
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25Qcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9UcmFuc2FjdGlvblByb3RvdHlwZUhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE9BQU8sRUFBNEQsTUFBTSxhQUFhLENBQUM7QUFDdkYsT0FBTyxFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGdCQUFnQixFQUE0QixNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJFLE1BQU0sT0FBTyx3QkFBd0I7SUFDbEIsYUFBYSxDQUFxQztJQUNsRCxNQUFNLENBQVM7SUFFaEMsWUFBWSxhQUFpRCxFQUFFLE1BQWM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBaUM7UUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsTUFBTSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEQsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNyQyxLQUFLLE1BQU0sbUJBQW1CLElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLFVBQVUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxRixNQUFNLGlCQUFpQixHQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBYyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFFNUYsSUFBSSxjQUFzQixDQUFDO1lBQzNCLElBQUksbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLFNBQVMseUJBQXlCLG1CQUFtQixDQUFDLGNBQWMsYUFBYSxDQUFDLENBQUM7Z0JBQzNKLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixtQkFBbUIsQ0FBQyxjQUFjLGVBQWUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNwRyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdCLGNBQWMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsU0FBUyxxQ0FBcUMsVUFBVSx1REFBdUQsQ0FBQyxDQUFDO2dCQUM3SSxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN0RixDQUFDO1lBQ0QsTUFBTSxZQUFZLEdBQXdCO2dCQUN4QyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsV0FBVztnQkFDNUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO29CQUNyQixNQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDeEYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsU0FBUyx5QkFBeUIsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDaEYsQ0FBQztvQkFDRCxPQUFPLGVBQWUsQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQUM7WUFDRixNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsUUFBUSxFQUFFLHlEQUF5RCxDQUFDLENBQUM7WUFDekgsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBRSxHQUFHLENBQUMsS0FBYSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RyxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -1,5 +1,5 @@
1
- import { AdviceContext, IAdvice } from '@eggjs/tegg/aop';
2
- import { EggProtoImplClass } from '@eggjs/tegg';
1
+ import { type AdviceContext, type IAdvice } from '@eggjs/tegg/aop';
2
+ import { type EggProtoImplClass } from '@eggjs/tegg';
3
3
  import { PropagationType } from '@eggjs/tegg/transaction';
4
4
  import { MysqlDataSource } from '@eggjs/dal-runtime';
5
5
  export interface TransactionalParams {
@@ -0,0 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Advice } from '@eggjs/tegg/aop';
8
+ import { AccessLevel, ObjectInitType } from '@eggjs/tegg';
9
+ import { PropagationType } from '@eggjs/tegg/transaction';
10
+ import { MysqlDataSource } from '@eggjs/dal-runtime';
11
+ let TransactionalAOP = class TransactionalAOP {
12
+ async around(ctx, next) {
13
+ const { propagation, dataSourceGetter } = ctx.adviceParams;
14
+ const dataSource = dataSourceGetter();
15
+ if (propagation === PropagationType.ALWAYS_NEW) {
16
+ return await dataSource.beginTransactionScope(next);
17
+ }
18
+ return await dataSource.beginTransactionScope(next);
19
+ }
20
+ };
21
+ TransactionalAOP = __decorate([
22
+ Advice({
23
+ accessLevel: AccessLevel.PUBLIC,
24
+ initType: ObjectInitType.SINGLETON,
25
+ })
26
+ ], TransactionalAOP);
27
+ export { TransactionalAOP };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25hbEFPUC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvVHJhbnNhY3Rpb25hbEFPUC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFvQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQTBCLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBVzlDLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBQ3BCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBMEQsRUFBRSxJQUF3QjtRQUN0RyxNQUFNLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsR0FBRyxDQUFDLFlBQWEsQ0FBQztRQUM1RCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLElBQUksV0FBVyxLQUFLLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxPQUFPLE1BQU0sVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLE1BQU0sVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRixDQUFBO0FBVFksZ0JBQWdCO0lBSjVCLE1BQU0sQ0FBQztRQUNOLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtRQUMvQixRQUFRLEVBQUUsY0FBYyxDQUFDLFNBQVM7S0FDbkMsQ0FBQztHQUNXLGdCQUFnQixDQVM1QiJ9
@@ -0,0 +1 @@
1
+ import '@eggjs/tegg-plugin/types';
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ import '@eggjs/tegg-plugin/types';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQyJ9
package/package.json CHANGED
@@ -10,9 +10,8 @@
10
10
  "eggModule": {
11
11
  "name": "teggDal"
12
12
  },
13
- "version": "3.62.0",
13
+ "version": "4.0.0-beta.10",
14
14
  "description": "dal plugin for egg",
15
- "main": "index.js",
16
15
  "keywords": [
17
16
  "egg",
18
17
  "plugin",
@@ -22,24 +21,24 @@
22
21
  "dal"
23
22
  ],
24
23
  "files": [
25
- "app.js",
26
- "app.d.ts",
27
- "index.js",
28
- "index.d.ts",
29
- "lib/**/*.js",
30
- "lib/**/*.d.ts",
31
- "app/**/*.js",
32
- "app/**/*.d.ts",
33
- "typings/*.d.ts"
24
+ "dist"
34
25
  ],
35
- "scripts": {
36
- "test": "cross-env NODE_ENV=test NODE_OPTIONS='--no-deprecation' mocha",
37
- "clean": "tsc -b --clean",
38
- "tsc": "npm run clean && tsc -p ./tsconfig.json",
39
- "tsc:pub": "npm run clean && tsc -p ./tsconfig.pub.json",
40
- "prepublishOnly": "npm run tsc:pub"
26
+ "type": "module",
27
+ "exports": {
28
+ ".": "./dist/index.js",
29
+ "./app": "./dist/app.js",
30
+ "./lib/DalModuleLoadUnitHook": "./dist/lib/DalModuleLoadUnitHook.js",
31
+ "./lib/DalTableEggPrototypeHook": "./dist/lib/DalTableEggPrototypeHook.js",
32
+ "./lib/DataSource": "./dist/lib/DataSource.js",
33
+ "./lib/MysqlDataSourceManager": "./dist/lib/MysqlDataSourceManager.js",
34
+ "./lib/SqlMapManager": "./dist/lib/SqlMapManager.js",
35
+ "./lib/TableModelManager": "./dist/lib/TableModelManager.js",
36
+ "./lib/TransactionalAOP": "./dist/lib/TransactionalAOP.js",
37
+ "./lib/TransactionPrototypeHook": "./dist/lib/TransactionPrototypeHook.js",
38
+ "./types": "./dist/types.js",
39
+ "./package.json": "./package.json"
41
40
  },
42
- "homepage": "https://github.com/eggjs/tegg",
41
+ "homepage": "https://github.com/eggjs/tegg/tree/next/plugin/dal",
43
42
  "bugs": {
44
43
  "url": "https://github.com/eggjs/tegg/issues"
45
44
  },
@@ -49,28 +48,45 @@
49
48
  "directory": "plugin/dal"
50
49
  },
51
50
  "engines": {
52
- "node": ">=14.0.0"
51
+ "node": ">=22.18.0"
53
52
  },
54
53
  "dependencies": {
55
- "@eggjs/dal-runtime": "^3.62.0"
54
+ "@eggjs/dal-runtime": "4.0.0-beta.10",
55
+ "@eggjs/tegg": "4.0.0-beta.10",
56
+ "@eggjs/tegg-metadata": "4.0.0-beta.10",
57
+ "@eggjs/dal-decorator": "4.0.0-beta.10"
58
+ },
59
+ "peerDependencies": {
60
+ "egg": "beta",
61
+ "@eggjs/tegg-plugin": "4.0.0-beta.10"
56
62
  },
57
63
  "devDependencies": {
58
- "@eggjs/tegg-aop-plugin": "^3.62.0",
59
- "@eggjs/tegg-config": "^3.62.0",
60
- "@eggjs/tegg-plugin": "^3.62.0",
61
- "@types/mocha": "^10.0.1",
62
- "@types/node": "^20.2.4",
63
- "cross-env": "^7.0.3",
64
- "egg": "^3.9.1",
65
- "egg-mock": "^5.5.0",
66
- "egg-tracer": "^2.0.0",
67
- "globby": "^11.1.0",
68
- "mocha": "^10.2.0",
69
- "ts-node": "^10.9.1",
70
- "typescript": "^5.0.4"
64
+ "@eggjs/bin": "beta",
65
+ "@eggjs/mock": "beta",
66
+ "@eggjs/tracer": "beta",
67
+ "@types/node": "^22.10.5",
68
+ "@types/mocha": "^10.0.10",
69
+ "egg": "beta",
70
+ "globby": "^14.1.0",
71
+ "mocha": "^11.0.1",
72
+ "typescript": "^5.9.3",
73
+ "tsdown": "^0.15.6",
74
+ "unplugin-unused": "^0.5.3",
75
+ "@eggjs/tegg-aop-plugin": "4.0.0-beta.10",
76
+ "@eggjs/tegg-config": "4.0.0-beta.10",
77
+ "@eggjs/tegg-plugin": "4.0.0-beta.10"
71
78
  },
72
79
  "publishConfig": {
73
80
  "access": "public"
74
81
  },
75
- "gitHead": "b0c5d2dbae617d227909f338013b1e6310054270"
76
- }
82
+ "main": "./dist/index.js",
83
+ "module": "./dist/index.js",
84
+ "types": "./dist/index.d.ts",
85
+ "scripts": {
86
+ "test:mocha": "egg-bin test",
87
+ "cov:mocha": "egg-bin cov",
88
+ "clean": "rimraf dist",
89
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc",
90
+ "typecheck": "tsc --noEmit"
91
+ }
92
+ }
@@ -1,5 +0,0 @@
1
- import { MysqlDataSourceManager } from '../../lib/MysqlDataSourceManager';
2
- declare const _default: {
3
- readonly mysqlDataSourceManager: MysqlDataSourceManager;
4
- };
5
- export default _default;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const MysqlDataSourceManager_1 = require("../../lib/MysqlDataSourceManager");
4
- exports.default = {
5
- get mysqlDataSourceManager() {
6
- return MysqlDataSourceManager_1.MysqlDataSourceManager.instance;
7
- },
8
- };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZFQUEwRTtBQUUxRSxrQkFBZTtJQUNiLElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sK0NBQXNCLENBQUMsUUFBUSxDQUFDO0lBQ3pDLENBQUM7Q0FDRixDQUFDIn0=
package/app.js DELETED
@@ -1,38 +0,0 @@
1
- "use strict";
2
- /// <reference path='./typings/index.d.ts'/>
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const DalTableEggPrototypeHook_1 = require("./lib/DalTableEggPrototypeHook");
5
- const MysqlDataSourceManager_1 = require("./lib/MysqlDataSourceManager");
6
- const SqlMapManager_1 = require("./lib/SqlMapManager");
7
- const TableModelManager_1 = require("./lib/TableModelManager");
8
- const DalModuleLoadUnitHook_1 = require("./lib/DalModuleLoadUnitHook");
9
- const TransactionPrototypeHook_1 = require("./lib/TransactionPrototypeHook");
10
- class ControllerAppBootHook {
11
- constructor(app) {
12
- this.app = app;
13
- }
14
- configWillLoad() {
15
- this.dalModuleLoadUnitHook = new DalModuleLoadUnitHook_1.DalModuleLoadUnitHook(this.app.config.env, this.app.moduleConfigs);
16
- this.dalTableEggPrototypeHook = new DalTableEggPrototypeHook_1.DalTableEggPrototypeHook(this.app.logger);
17
- this.transactionPrototypeHook = new TransactionPrototypeHook_1.TransactionPrototypeHook(this.app.moduleConfigs, this.app.logger);
18
- this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.dalTableEggPrototypeHook);
19
- this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.transactionPrototypeHook);
20
- this.app.loadUnitLifecycleUtil.registerLifecycle(this.dalModuleLoadUnitHook);
21
- }
22
- async beforeClose() {
23
- if (this.dalTableEggPrototypeHook) {
24
- this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.dalTableEggPrototypeHook);
25
- }
26
- if (this.dalModuleLoadUnitHook) {
27
- this.app.loadUnitLifecycleUtil.deleteLifecycle(this.dalModuleLoadUnitHook);
28
- }
29
- if (this.transactionPrototypeHook) {
30
- this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.transactionPrototypeHook);
31
- }
32
- MysqlDataSourceManager_1.MysqlDataSourceManager.instance.clear();
33
- SqlMapManager_1.SqlMapManager.instance.clear();
34
- TableModelManager_1.TableModelManager.instance.clear();
35
- }
36
- }
37
- exports.default = ControllerAppBootHook;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBNEM7O0FBRzVDLDZFQUEwRTtBQUMxRSx5RUFBc0U7QUFDdEUsdURBQW9EO0FBQ3BELCtEQUE0RDtBQUM1RCx1RUFBb0U7QUFDcEUsNkVBQTBFO0FBRTFFLE1BQXFCLHFCQUFxQjtJQU14QyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksNkNBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksbURBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxtREFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELCtDQUFzQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4Qyw2QkFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixxQ0FBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBakNELHdDQWlDQyJ9
package/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export { MysqlDataSourceManager } from './lib/MysqlDataSourceManager';
package/index.js DELETED
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MysqlDataSourceManager = void 0;
4
- var MysqlDataSourceManager_1 = require("./lib/MysqlDataSourceManager");
5
- Object.defineProperty(exports, "MysqlDataSourceManager", { enumerable: true, get: function () { return MysqlDataSourceManager_1.MysqlDataSourceManager; } });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1RUFBc0U7QUFBN0QsZ0lBQUEsc0JBQXNCLE9BQUEifQ==
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DalTableEggPrototypeHook = void 0;
4
- const dal_decorator_1 = require("@eggjs/dal-decorator");
5
- const dal_runtime_1 = require("@eggjs/dal-runtime");
6
- const TableModelManager_1 = require("./TableModelManager");
7
- const SqlMapManager_1 = require("./SqlMapManager");
8
- class DalTableEggPrototypeHook {
9
- constructor(logger) {
10
- this.logger = logger;
11
- }
12
- async preCreate(ctx) {
13
- if (!dal_decorator_1.DaoInfoUtil.getIsDao(ctx.clazz))
14
- return;
15
- const tableClazz = ctx.clazz.clazzModel;
16
- const tableModel = dal_decorator_1.TableModel.build(tableClazz);
17
- TableModelManager_1.TableModelManager.instance.set(ctx.loadUnit.name, tableModel);
18
- const loader = new dal_runtime_1.SqlMapLoader(tableModel, ctx.clazz, this.logger);
19
- const sqlMap = loader.load();
20
- SqlMapManager_1.SqlMapManager.instance.set(ctx.loadUnit.name, sqlMap);
21
- }
22
- }
23
- exports.DalTableEggPrototypeHook = DalTableEggPrototypeHook;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFsVGFibGVFZ2dQcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRGFsVGFibGVFZ2dQcm90b3R5cGVIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHdEQUErRDtBQUMvRCxvREFBa0Q7QUFDbEQsMkRBQXdEO0FBQ3hELG1EQUFnRDtBQUVoRCxNQUFhLHdCQUF3QjtJQUduQyxZQUFZLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBaUM7UUFDL0MsSUFBSSxDQUFDLDJCQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQzdDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUF1QiwwQkFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxxQ0FBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksMEJBQVksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLDZCQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUFoQkQsNERBZ0JDIn0=
package/lib/DataSource.js DELETED
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.DataSourceDelegate = void 0;
19
- const node_assert_1 = __importDefault(require("node:assert"));
20
- const tegg_1 = require("@eggjs/tegg");
21
- const helper_1 = require("@eggjs/tegg/helper");
22
- const dal_1 = require("@eggjs/tegg/dal");
23
- const dal_runtime_1 = require("@eggjs/dal-runtime");
24
- const TableModelManager_1 = require("./TableModelManager");
25
- const MysqlDataSourceManager_1 = require("./MysqlDataSourceManager");
26
- const SqlMapManager_1 = require("./SqlMapManager");
27
- const TransactionalAOP_1 = require("./TransactionalAOP");
28
- let DataSourceDelegate = class DataSourceDelegate extends dal_runtime_1.DataSource {
29
- constructor(transactionalAOP, objInfo) {
30
- var _a;
31
- const dataSourceQualifierValue = (_a = objInfo.qualifiers.find(t => t.attribute === dal_1.DataSourceQualifierAttribute)) === null || _a === void 0 ? void 0 : _a.value;
32
- (0, node_assert_1.default)(dataSourceQualifierValue);
33
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
- const [moduleName, dataSource, clazzName] = dataSourceQualifierValue.split('.');
35
- const tableModel = TableModelManager_1.TableModelManager.instance.get(moduleName, clazzName);
36
- (0, node_assert_1.default)(tableModel, `not found table ${dataSourceQualifierValue}`);
37
- const mysqlDataSource = MysqlDataSourceManager_1.MysqlDataSourceManager.instance.get(moduleName, dataSource);
38
- (0, node_assert_1.default)(mysqlDataSource, `not found dataSource ${dataSource} in module ${moduleName}`);
39
- const sqlMap = SqlMapManager_1.SqlMapManager.instance.get(moduleName, clazzName);
40
- (0, node_assert_1.default)(sqlMap, `not found SqlMap ${clazzName} in module ${moduleName}`);
41
- super(tableModel, mysqlDataSource, sqlMap);
42
- this.transactionalAOP = transactionalAOP;
43
- this.objInfo = objInfo;
44
- }
45
- };
46
- exports.DataSourceDelegate = DataSourceDelegate;
47
- exports.DataSourceDelegate = DataSourceDelegate = __decorate([
48
- (0, tegg_1.MultiInstanceProto)({
49
- accessLevel: tegg_1.AccessLevel.PUBLIC,
50
- initType: tegg_1.ObjectInitType.SINGLETON,
51
- getObjects(ctx) {
52
- const config = helper_1.ModuleConfigUtil.loadModuleConfigSync(ctx.unitPath);
53
- const dataSources = Object.keys((config === null || config === void 0 ? void 0 : config.dataSource) || {});
54
- const result = [];
55
- const loader = helper_1.LoaderFactory.createLoader(ctx.unitPath, helper_1.EggLoadUnitType.MODULE);
56
- const clazzList = loader.load();
57
- const tableClazzList = clazzList.filter(t => {
58
- return dal_1.TableInfoUtil.getIsTable(t);
59
- });
60
- const dataSourceLength = dataSources.length;
61
- for (const dataSource of dataSources) {
62
- const moduleClazzList = tableClazzList.filter(clazz => {
63
- var _a;
64
- const tableParams = dal_1.TableInfoUtil.getTableParams(clazz);
65
- const dataSourceName = (_a = tableParams === null || tableParams === void 0 ? void 0 : tableParams.dataSourceName) !== null && _a !== void 0 ? _a : 'default';
66
- return dataSourceLength === 1 || dataSourceName === dataSource;
67
- });
68
- for (const clazz of moduleClazzList) {
69
- result.push({
70
- name: dal_1.DataSourceInjectName,
71
- qualifiers: [{
72
- attribute: dal_1.DataSourceQualifierAttribute,
73
- value: `${ctx.moduleName}.${dataSource}.${clazz.name}`,
74
- }],
75
- });
76
- }
77
- }
78
- return result;
79
- },
80
- }),
81
- __param(0, (0, tegg_1.Inject)({ name: 'transactionalAOP' })),
82
- __param(1, (0, tegg_1.MultiInstanceInfo)([dal_1.DataSourceQualifierAttribute, tegg_1.LoadUnitNameQualifierAttribute])),
83
- __metadata("design:paramtypes", [TransactionalAOP_1.TransactionalAOP, Object])
84
- ], DataSourceDelegate);
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkRhdGFTb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQWlDO0FBQ2pDLHNDQU9xQjtBQUNyQiwrQ0FJNEI7QUFDNUIseUNBS3lCO0FBQ3pCLG9EQUFnRDtBQUNoRCwyREFBd0Q7QUFDeEQscUVBQWtFO0FBQ2xFLG1EQUFnRDtBQUNoRCx5REFBc0Q7QUFrQy9DLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQXNCLFNBQVEsd0JBQWE7SUFNdEQsWUFDd0MsZ0JBQWtDLEVBQ2EsT0FBbUI7O1FBQ3hHLE1BQU0sd0JBQXdCLEdBQUcsTUFBQSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssa0NBQTRCLENBQUMsMENBQUUsS0FBSyxDQUFDO1FBQ25ILElBQUEscUJBQU0sRUFBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2pDLDZEQUE2RDtRQUM3RCxNQUFNLENBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUUsR0FBSSx3QkFBbUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUYsTUFBTSxVQUFVLEdBQUcscUNBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDekUsSUFBQSxxQkFBTSxFQUFDLFVBQVUsRUFBRSxtQkFBbUIsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sZUFBZSxHQUFHLCtDQUFzQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BGLElBQUEscUJBQU0sRUFBQyxlQUFlLEVBQUUsd0JBQXdCLFVBQVUsY0FBYyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sTUFBTSxHQUFHLDZCQUFhLENBQUMs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
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MysqlDataSourceManager = void 0;
7
- const dal_runtime_1 = require("@eggjs/dal-runtime");
8
- const node_crypto_1 = __importDefault(require("node:crypto"));
9
- class MysqlDataSourceManager {
10
- constructor() {
11
- this.dataSourceIndices = new Map();
12
- this.dataSources = new Map();
13
- }
14
- get(moduleName, dataSourceName) {
15
- var _a;
16
- const dataSourceIndex = (_a = this.dataSourceIndices.get(moduleName)) === null || _a === void 0 ? void 0 : _a.get(dataSourceName);
17
- if (dataSourceIndex) {
18
- return this.dataSources.get(dataSourceIndex);
19
- }
20
- }
21
- async createDataSource(moduleName, dataSourceName, config) {
22
- const { logger, ...dsConfig } = config || {};
23
- const dataSourceConfig = {
24
- ...dsConfig,
25
- name: dataSourceName,
26
- };
27
- const index = MysqlDataSourceManager.createDataSourceKey(dataSourceConfig);
28
- let dataSource = this.dataSources.get(index);
29
- if (!dataSource) {
30
- dataSource = new dal_runtime_1.MysqlDataSource({ ...dataSourceConfig, logger });
31
- this.dataSources.set(index, dataSource);
32
- }
33
- let moduledataSourceIndices = this.dataSourceIndices.get(moduleName);
34
- if (!moduledataSourceIndices) {
35
- moduledataSourceIndices = new Map();
36
- this.dataSourceIndices.set(moduleName, moduledataSourceIndices);
37
- }
38
- moduledataSourceIndices.set(dataSourceName, index);
39
- await dataSource.ready();
40
- }
41
- clear() {
42
- this.dataSourceIndices.clear();
43
- }
44
- static createDataSourceKey(dataSourceOptions) {
45
- const hash = node_crypto_1.default.createHash('md5');
46
- const keys = Object.keys(dataSourceOptions)
47
- .sort();
48
- for (const key of keys) {
49
- const value = dataSourceOptions[key];
50
- if (value) {
51
- hash.update(key);
52
- hash.update(String(value));
53
- }
54
- }
55
- return hash.digest('hex');
56
- }
57
- }
58
- exports.MysqlDataSourceManager = MysqlDataSourceManager;
59
- MysqlDataSourceManager.instance = new MysqlDataSourceManager();
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXlzcWxEYXRhU291cmNlTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk15c3FsRGF0YVNvdXJjZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQXdFO0FBQ3hFLDhEQUFpQztBQUVqQyxNQUFhLHNCQUFzQjtJQU1qQztRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsR0FBRyxDQUFDLFVBQWtCLEVBQUUsY0FBc0I7O1FBQzVDLE1BQU0sZUFBZSxHQUFHLE1BQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsMENBQzFELEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxjQUFzQixFQUFFLE1BQXlCO1FBQzFGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQzdDLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxRQUFRO1lBQ1gsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0UsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxJQUFJLDZCQUFlLENBQUMsRUFBRSxHQUFHLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLHVCQUF1QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0IsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRW5ELE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsaUJBQW9DO1FBQzdELE1BQU0sSUFBSSxHQUFHLHFCQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDeEMsSUFBSSxFQUFFLENBQUM7UUFDVixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOztBQXpESCx3REEwREM7QUF6RFEsK0JBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUMifQ==
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SqlMapManager = void 0;
4
- class SqlMapManager {
5
- constructor() {
6
- this.sqlMaps = new Map();
7
- }
8
- get(moduleName, clazzName) {
9
- var _a;
10
- return (_a = this.sqlMaps.get(moduleName)) === null || _a === void 0 ? void 0 : _a.get(clazzName);
11
- }
12
- set(moduleName, sqlMap) {
13
- let tables = this.sqlMaps.get(moduleName);
14
- if (!tables) {
15
- tables = new Map();
16
- this.sqlMaps.set(moduleName, tables);
17
- }
18
- tables.set(sqlMap.name, sqlMap);
19
- }
20
- clear() {
21
- this.sqlMaps.clear();
22
- }
23
- }
24
- exports.SqlMapManager = SqlMapManager;
25
- SqlMapManager.instance = new SqlMapManager();
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsTWFwTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNxbE1hcE1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBYSxhQUFhO0lBS3hCO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQjs7UUFDdkMsT0FBTyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQywwQ0FBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELEdBQUcsQ0FBQyxVQUFrQixFQUFFLE1BQW1CO1FBQ3pDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDOztBQXhCSCxzQ0F5QkM7QUF4QlEsc0JBQVEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDIn0=
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TableModelManager = void 0;
4
- class TableModelManager {
5
- constructor() {
6
- this.tableModels = new Map();
7
- }
8
- get(moduleName, clazzName) {
9
- var _a;
10
- return (_a = this.tableModels.get(moduleName)) === null || _a === void 0 ? void 0 : _a.get(clazzName);
11
- }
12
- set(moduleName, tableModel) {
13
- let tables = this.tableModels.get(moduleName);
14
- if (!tables) {
15
- tables = new Map();
16
- this.tableModels.set(moduleName, tables);
17
- }
18
- tables.set(tableModel.clazz.name, tableModel);
19
- }
20
- clear() {
21
- this.tableModels.clear();
22
- }
23
- }
24
- exports.TableModelManager = TableModelManager;
25
- TableModelManager.instance = new TableModelManager();
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVNb2RlbE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJUYWJsZU1vZGVsTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFhLGlCQUFpQjtJQUs1QjtRQUNFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsR0FBRyxDQUFDLFVBQWtCLEVBQUUsU0FBaUI7O1FBQ3ZDLE9BQU8sTUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsMENBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxHQUFHLENBQUMsVUFBa0IsRUFBRSxVQUFzQjtRQUM1QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7O0FBeEJILDhDQXlCQztBQXhCUSwwQkFBUSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQyJ9
@@ -1,60 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TransactionPrototypeHook = void 0;
7
- const assert_1 = __importDefault(require("assert"));
8
- const transaction_1 = require("@eggjs/tegg/transaction");
9
- const aop_1 = require("@eggjs/tegg/aop");
10
- const TransactionalAOP_1 = require("./TransactionalAOP");
11
- const MysqlDataSourceManager_1 = require("./MysqlDataSourceManager");
12
- class TransactionPrototypeHook {
13
- constructor(moduleConfigs, logger) {
14
- this.moduleConfigs = moduleConfigs;
15
- this.logger = logger;
16
- }
17
- async preCreate(ctx) {
18
- var _a, _b;
19
- const builder = new transaction_1.TransactionMetaBuilder(ctx.clazz);
20
- const transactionMetadataList = builder.build();
21
- if (transactionMetadataList.length < 1) {
22
- return;
23
- }
24
- const moduleName = ctx.loadUnit.name;
25
- for (const transactionMetadata of transactionMetadataList) {
26
- const clazzName = `${moduleName}.${ctx.clazz.name}.${String(transactionMetadata.method)}`;
27
- const datasourceConfigs = ((_b = (_a = this.moduleConfigs[moduleName]) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.dataSource) || {};
28
- let datasourceName;
29
- if (transactionMetadata.datasourceName) {
30
- (0, assert_1.default)(datasourceConfigs[transactionMetadata.datasourceName], `method ${clazzName} specified datasource ${transactionMetadata.datasourceName} not exists`);
31
- datasourceName = transactionMetadata.datasourceName;
32
- this.logger.info(`use datasource [${transactionMetadata.datasourceName}] for class ${clazzName}`);
33
- }
34
- else {
35
- const dataSources = Object.keys(datasourceConfigs);
36
- if (dataSources.length === 1) {
37
- datasourceName = dataSources[0];
38
- }
39
- else {
40
- throw new Error(`method ${clazzName} not specified datasource, module ${moduleName} has multi datasource, should specify datasource name`);
41
- }
42
- this.logger.info(`use default datasource ${dataSources[0]} for class ${clazzName}`);
43
- }
44
- const adviceParams = {
45
- propagation: transactionMetadata.propagation,
46
- dataSourceGetter: () => {
47
- const mysqlDataSource = MysqlDataSourceManager_1.MysqlDataSourceManager.instance.get(moduleName, datasourceName);
48
- if (!mysqlDataSource) {
49
- throw new Error(`method ${clazzName} not found datasource ${datasourceName}`);
50
- }
51
- return mysqlDataSource;
52
- },
53
- };
54
- (0, assert_1.default)(adviceParams.propagation === transaction_1.PropagationType.REQUIRED, 'Transactional propagation only support required for now');
55
- (0, aop_1.Pointcut)(TransactionalAOP_1.TransactionalAOP, { adviceParams })(ctx.clazz.prototype, transactionMetadata.method);
56
- }
57
- }
58
- }
59
- exports.TransactionPrototypeHook = TransactionPrototypeHook;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25Qcm90b3R5cGVIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiVHJhbnNhY3Rpb25Qcm90b3R5cGVIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUc1Qix5REFBa0Y7QUFDbEYseUNBQTJDO0FBQzNDLHlEQUEyRTtBQUMzRSxxRUFBa0U7QUFFbEUsTUFBYSx3QkFBd0I7SUFJbkMsWUFBWSxhQUFpRCxFQUFFLE1BQWM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBaUM7O1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksb0NBQXNCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hELElBQUksdUJBQXVCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckMsS0FBSyxNQUFNLG1CQUFtQixJQUFJLHVCQUF1QixFQUFFLENBQUM7WUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxVQUFVLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUYsTUFBTSxpQkFBaUIsR0FBRyxDQUFBLE1BQUMsTUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQywwQ0FBRSxNQUFjLDBDQUFFLFVBQVUsS0FBSSxFQUFFLENBQUM7WUFFNUYsSUFBSSxjQUFzQixDQUFDO1lBQzNCLElBQUksbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxVQUFVLFNBQVMseUJBQXlCLG1CQUFtQixDQUFDLGNBQWMsYUFBYSxDQUFDLENBQUM7Z0JBQzNKLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixtQkFBbUIsQ0FBQyxjQUFjLGVBQWUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNwRyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdCLGNBQWMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsU0FBUyxxQ0FBcUMsVUFBVSx1REFBdUQsQ0FBQyxDQUFDO2dCQUM3SSxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixXQUFXLENBQUMsQ0FBQyxDQUFDLGNBQWMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN0RixDQUFDO1lBQ0QsTUFBTSxZQUFZLEdBQXdCO2dCQUN4QyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsV0FBVztnQkFDNUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO29CQUNyQixNQUFNLGVBQWUsR0FBRywrQ0FBc0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDeEYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsU0FBUyx5QkFBeUIsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDaEYsQ0FBQztvQkFDRCxPQUFPLGVBQWUsQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQUM7WUFDRixJQUFBLGdCQUFNLEVBQUMsWUFBWSxDQUFDLFdBQVcsS0FBSyw2QkFBZSxDQUFDLFFBQVEsRUFBRSx5REFBeUQsQ0FBQyxDQUFDO1lBQ3pILElBQUEsY0FBUSxFQUFDLG1DQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBRSxHQUFHLENBQUMsS0FBYSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RyxDQUFDO0lBQ0gsQ0FBQztDQUVGO0FBakRELDREQWlEQyJ9
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.TransactionalAOP = void 0;
10
- const aop_1 = require("@eggjs/tegg/aop");
11
- const tegg_1 = require("@eggjs/tegg");
12
- const transaction_1 = require("@eggjs/tegg/transaction");
13
- let TransactionalAOP = class TransactionalAOP {
14
- async around(ctx, next) {
15
- const { propagation, dataSourceGetter } = ctx.adviceParams;
16
- const dataSource = dataSourceGetter();
17
- if (propagation === transaction_1.PropagationType.ALWAYS_NEW) {
18
- return await dataSource.beginTransactionScope(next);
19
- }
20
- return await dataSource.beginTransactionScope(next);
21
- }
22
- };
23
- exports.TransactionalAOP = TransactionalAOP;
24
- exports.TransactionalAOP = TransactionalAOP = __decorate([
25
- (0, aop_1.Advice)({
26
- accessLevel: tegg_1.AccessLevel.PUBLIC,
27
- initType: tegg_1.ObjectInitType.SINGLETON,
28
- })
29
- ], TransactionalAOP);
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb25hbEFPUC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlRyYW5zYWN0aW9uYWxBT1AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEseUNBQWlFO0FBQ2pFLHNDQUE2RTtBQUM3RSx5REFBMEQ7QUFZbkQsSUFBTSxnQkFBZ0IsR0FBdEIsTUFBTSxnQkFBZ0I7SUFDcEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUEwRCxFQUFFLElBQXdCO1FBQ3RHLE1BQU0sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxHQUFHLENBQUMsWUFBYSxDQUFDO1FBQzVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDdEMsSUFBSSxXQUFXLEtBQUssNkJBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQyxPQUFPLE1BQU0sVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLE1BQU0sVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRixDQUFBO0FBVFksNENBQWdCOzJCQUFoQixnQkFBZ0I7SUFKNUIsSUFBQSxZQUFNLEVBQUM7UUFDTixXQUFXLEVBQUUsa0JBQVcsQ0FBQyxNQUFNO1FBQy9CLFFBQVEsRUFBRSxxQkFBYyxDQUFDLFNBQVM7S0FDbkMsQ0FBQztHQUNXLGdCQUFnQixDQVM1QiJ9
@@ -1,3 +0,0 @@
1
- import 'egg';
2
- import '@eggjs/tegg-plugin';
3
- import '@eggjs/tegg-config';
File without changes
File without changes