@eggjs/tegg-orm-plugin 4.0.0-beta.1 → 4.0.0-beta.11
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.
- package/README.md +12 -0
- package/{app.d.ts → dist/app.d.ts} +9 -1
- package/dist/app.js +46 -0
- package/dist/config/config.default.d.ts +16 -0
- package/dist/config/config.default.js +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/{lib → dist/lib}/DataSourceManager.d.ts +2 -0
- package/dist/lib/DataSourceManager.js +21 -0
- package/{lib → dist/lib}/LeoricRegister.d.ts +4 -4
- package/dist/lib/LeoricRegister.js +82 -0
- package/{lib → dist/lib}/ModelProtoHook.d.ts +3 -3
- package/dist/lib/ModelProtoHook.js +19 -0
- package/{lib → dist/lib}/ModelProtoManager.d.ts +2 -2
- package/dist/lib/ModelProtoManager.js +14 -0
- package/{lib → dist/lib}/ORMLoadUnitHook.d.ts +2 -2
- package/dist/lib/ORMLoadUnitHook.js +19 -0
- package/{lib → dist/lib}/SingletonModelObject.d.ts +6 -6
- package/dist/lib/SingletonModelObject.js +47 -0
- package/{lib → dist/lib}/SingletonModelProto.d.ts +5 -5
- package/dist/lib/SingletonModelProto.js +40 -0
- package/{lib → dist/lib}/SingletonORM.d.ts +1 -1
- package/{lib → dist/lib}/SingletonORM.js +2 -2
- package/{lib → dist/lib}/types.d.ts +1 -1
- package/{lib → dist/lib}/types.js +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.js +4 -0
- package/package.json +54 -49
- package/app.js +0 -44
- package/index.d.ts +0 -20
- package/index.js +0 -2
- package/lib/DataSourceManager.js +0 -21
- package/lib/LeoricRegister.js +0 -80
- package/lib/ModelProtoHook.js +0 -16
- package/lib/ModelProtoManager.js +0 -12
- package/lib/ORMLoadUnitHook.js +0 -18
- package/lib/SingletonModelObject.js +0 -46
- package/lib/SingletonModelProto.js +0 -40
package/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @eggjs/tegg-orm-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
|
+
[](https://nodejs.org/en/download/)
|
|
7
|
+
|
|
8
|
+
[npm-image]: https://img.shields.io/npm/v/@eggjs/tegg-orm-plugin.svg?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/@eggjs/tegg-orm-plugin
|
|
10
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-orm-plugin/badge.svg?style=flat-square
|
|
11
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-orm-plugin
|
|
12
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-orm-plugin.svg?style=flat-square
|
|
13
|
+
[download-url]: https://npmjs.org/package/@eggjs/tegg-orm-plugin
|
|
14
|
+
|
|
3
15
|
使用注解的方式来开发 egg 中的 orm
|
|
4
16
|
|
|
5
17
|
## Install
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { Orm } from './lib/SingletonORM.ts';
|
|
3
|
+
import { LeoricRegister } from './lib/LeoricRegister.ts';
|
|
2
4
|
export default class OrmAppBootHook {
|
|
3
5
|
private readonly app;
|
|
4
6
|
private readonly dataSourceManager;
|
|
@@ -12,3 +14,9 @@ export default class OrmAppBootHook {
|
|
|
12
14
|
didLoad(): Promise<void>;
|
|
13
15
|
beforeClose(): Promise<void>;
|
|
14
16
|
}
|
|
17
|
+
declare module 'egg' {
|
|
18
|
+
interface Application {
|
|
19
|
+
leoricRegister: LeoricRegister;
|
|
20
|
+
orm: Orm;
|
|
21
|
+
}
|
|
22
|
+
}
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { MODEL_PROTO_IMPL_TYPE } from '@eggjs/tegg-orm-decorator';
|
|
3
|
+
import { Orm } from "./lib/SingletonORM.js";
|
|
4
|
+
import { DataSourceManager } from "./lib/DataSourceManager.js";
|
|
5
|
+
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
6
|
+
import { ModelProtoManager } from "./lib/ModelProtoManager.js";
|
|
7
|
+
import { ModelProtoHook } from "./lib/ModelProtoHook.js";
|
|
8
|
+
import SingletonModelProto from "./lib/SingletonModelProto.js";
|
|
9
|
+
import { SingletonModelObject } from "./lib/SingletonModelObject.js";
|
|
10
|
+
import { ORMLoadUnitHook } from "./lib/ORMLoadUnitHook.js";
|
|
11
|
+
export default class OrmAppBootHook {
|
|
12
|
+
constructor(app) {
|
|
13
|
+
this.app = app;
|
|
14
|
+
this.dataSourceManager = new DataSourceManager();
|
|
15
|
+
this.modelProtoManager = new ModelProtoManager();
|
|
16
|
+
this.leoricRegister = new LeoricRegister(this.modelProtoManager, this.dataSourceManager);
|
|
17
|
+
this.modelProtoHook = new ModelProtoHook(this.modelProtoManager);
|
|
18
|
+
this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(MODEL_PROTO_IMPL_TYPE, SingletonModelProto.createProto);
|
|
19
|
+
this.app.leoricRegister = this.leoricRegister;
|
|
20
|
+
this.ormLoadUnitHook = new ORMLoadUnitHook();
|
|
21
|
+
}
|
|
22
|
+
configWillLoad() {
|
|
23
|
+
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.modelProtoHook);
|
|
24
|
+
this.app.eggObjectFactory.registerEggObjectCreateMethod(SingletonModelProto, SingletonModelObject.createObject);
|
|
25
|
+
this.app.loadUnitLifecycleUtil.registerLifecycle(this.ormLoadUnitHook);
|
|
26
|
+
}
|
|
27
|
+
configDidLoad() {
|
|
28
|
+
const config = this.app.config.orm;
|
|
29
|
+
if (config.datasources) {
|
|
30
|
+
for (const datasource of config.datasources) {
|
|
31
|
+
this.dataSourceManager.addConfig(datasource);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.dataSourceManager.addDefaultConfig(config);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async didLoad() {
|
|
39
|
+
await this.app.moduleHandler.ready();
|
|
40
|
+
await this.leoricRegister.register();
|
|
41
|
+
}
|
|
42
|
+
async beforeClose() {
|
|
43
|
+
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.modelProtoHook);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sbUJBQW1CLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQVFqQyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNySCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsNkJBQTZCLENBQUMsbUJBQW1CLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OrmConfig } from '../lib/DataSourceManager.ts';
|
|
2
|
+
export interface AppOrmConfig extends OrmConfig {
|
|
3
|
+
datasources?: OrmConfig[];
|
|
4
|
+
}
|
|
5
|
+
declare const _default: {
|
|
6
|
+
orm: AppOrmConfig;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
9
|
+
declare module 'egg' {
|
|
10
|
+
interface EggAppConfig {
|
|
11
|
+
/**
|
|
12
|
+
* orm config
|
|
13
|
+
*/
|
|
14
|
+
orm: AppOrmConfig;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
orm: {},
|
|
3
|
+
};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLGVBQWU7SUFDYixHQUFHLEVBQUUsRUFBa0I7Q0FDeEIsQ0FBQyJ9
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import "./types.js";
|
|
2
|
+
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
3
|
+
import { Orm } from "./lib/SingletonORM.js";
|
|
4
|
+
export { Orm, LeoricRegister };
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class DataSourceManager {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.dataSourceConfigs = [];
|
|
4
|
+
}
|
|
5
|
+
addDefaultConfig(config) {
|
|
6
|
+
this.defaultDataSourceConfig = config;
|
|
7
|
+
}
|
|
8
|
+
getDefaultConfig() {
|
|
9
|
+
return this.defaultDataSourceConfig;
|
|
10
|
+
}
|
|
11
|
+
addConfig(config) {
|
|
12
|
+
this.dataSourceConfigs.push(config);
|
|
13
|
+
}
|
|
14
|
+
getConfig(name) {
|
|
15
|
+
if (this.defaultDataSourceConfig?.database === name) {
|
|
16
|
+
return this.defaultDataSourceConfig;
|
|
17
|
+
}
|
|
18
|
+
return this.dataSourceConfigs.find(t => t.database === name);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0RhdGFTb3VyY2VNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThCQSxNQUFNLE9BQU8saUJBQWlCO0lBSTVCO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBaUI7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFpQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGIn0=
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Base } from 'sdk-base';
|
|
2
2
|
import { ModelMetadata } from '@eggjs/tegg-orm-decorator';
|
|
3
|
-
import { ModelProtoManager } from './ModelProtoManager.
|
|
4
|
-
import { DataSourceManager, OrmConfig } from './DataSourceManager.
|
|
5
|
-
import type { RealmType } from './types.
|
|
3
|
+
import { ModelProtoManager } from './ModelProtoManager.ts';
|
|
4
|
+
import { DataSourceManager, type OrmConfig } from './DataSourceManager.ts';
|
|
5
|
+
import type { RealmType } from './types.ts';
|
|
6
6
|
export declare class LeoricRegister extends Base {
|
|
7
7
|
private readonly modelProtoManager;
|
|
8
8
|
private readonly dataSourceManager;
|
|
9
9
|
readonly realmMap: Map<string, RealmType>;
|
|
10
10
|
constructor(modelProtoManager: ModelProtoManager, dataSourceManager: DataSourceManager);
|
|
11
|
-
getConfig(datasource?: string): OrmConfig
|
|
11
|
+
getConfig(datasource?: string): OrmConfig;
|
|
12
12
|
getRealm(config: OrmConfig | undefined): RealmType | undefined;
|
|
13
13
|
getOrCreateRealm(datasource: string | undefined): any;
|
|
14
14
|
generateLeoricAttributes(metadata: ModelMetadata): Record<string, any>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Base } from 'sdk-base';
|
|
2
|
+
import Realm from 'leoric';
|
|
3
|
+
import { ModelMetadata, ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
4
|
+
import { ModelProtoManager } from "./ModelProtoManager.js";
|
|
5
|
+
import { DataSourceManager } from "./DataSourceManager.js";
|
|
6
|
+
export class LeoricRegister extends Base {
|
|
7
|
+
constructor(modelProtoManager, dataSourceManager) {
|
|
8
|
+
super();
|
|
9
|
+
this.modelProtoManager = modelProtoManager;
|
|
10
|
+
this.dataSourceManager = dataSourceManager;
|
|
11
|
+
this.realmMap = new Map();
|
|
12
|
+
}
|
|
13
|
+
getConfig(datasource) {
|
|
14
|
+
let config;
|
|
15
|
+
if (!datasource) {
|
|
16
|
+
config = this.dataSourceManager.getDefaultConfig();
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
config = this.dataSourceManager.getConfig(datasource);
|
|
20
|
+
}
|
|
21
|
+
return config;
|
|
22
|
+
}
|
|
23
|
+
getRealm(config) {
|
|
24
|
+
if (!config?.database) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
const realm = this.realmMap.get(config.database);
|
|
28
|
+
return realm;
|
|
29
|
+
}
|
|
30
|
+
getOrCreateRealm(datasource) {
|
|
31
|
+
const config = this.getConfig(datasource);
|
|
32
|
+
let realm;
|
|
33
|
+
if (config) {
|
|
34
|
+
realm = this.getRealm(config);
|
|
35
|
+
if (realm) {
|
|
36
|
+
return realm;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
realm = new Realm({ ...config });
|
|
40
|
+
this.realmMap.set(config.database, realm);
|
|
41
|
+
return realm;
|
|
42
|
+
}
|
|
43
|
+
generateLeoricAttributes(metadata) {
|
|
44
|
+
const attributes = {};
|
|
45
|
+
for (const attribute of metadata.attributes) {
|
|
46
|
+
attributes[attribute.propertyName] = {
|
|
47
|
+
columnName: attribute.attributeName,
|
|
48
|
+
type: attribute.dataType,
|
|
49
|
+
allowNull: attribute.allowNull,
|
|
50
|
+
primaryKey: attribute.primary,
|
|
51
|
+
unique: attribute.unique,
|
|
52
|
+
autoIncrement: attribute.autoIncrement,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return attributes;
|
|
56
|
+
}
|
|
57
|
+
async register() {
|
|
58
|
+
for (const { proto, clazz } of this.modelProtoManager.getProtos()) {
|
|
59
|
+
const metadata = ModelMetadataUtil.getModelMetadata(clazz);
|
|
60
|
+
if (!metadata)
|
|
61
|
+
throw new Error(`not found metadata for model ${proto.id}`);
|
|
62
|
+
const realm = this.getOrCreateRealm(metadata.dataSource);
|
|
63
|
+
realm.models[clazz.name] = clazz;
|
|
64
|
+
realm[clazz.name] = clazz;
|
|
65
|
+
const attributes = this.generateLeoricAttributes(metadata);
|
|
66
|
+
const hooks = {};
|
|
67
|
+
for (const hookName of Realm.hookNames) {
|
|
68
|
+
if (clazz[hookName]) {
|
|
69
|
+
hooks[hookName] = clazz[hookName];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
clazz.init(attributes, {
|
|
73
|
+
tableName: metadata.tableName,
|
|
74
|
+
hooks,
|
|
75
|
+
}, {});
|
|
76
|
+
}
|
|
77
|
+
await Promise.all(Array.from(this.realmMap.values())
|
|
78
|
+
.map(realm => realm.connect()));
|
|
79
|
+
this.ready(true);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVvcmljUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0xlb3JpY1JlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFHM0UsTUFBTSxPQUFPLGNBQWUsU0FBUSxJQUFJO0lBS3RDLFlBQVksaUJBQW9DLEVBQUUsaUJBQW9DO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFtQjtRQUMzQixJQUFJLE1BQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTZCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUE4QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksS0FBNEIsQ0FBQztRQUNqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxHQUFHLElBQUssS0FBYSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBTSxDQUFDLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBdUI7UUFDOUMsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUMzQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHO2dCQUNuQyxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWE7Z0JBQ25DLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUTtnQkFDeEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzdCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtnQkFDeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO2FBQ3ZDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osS0FBSyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxNQUFNLEtBQUssR0FBd0IsRUFBRSxDQUFDO1lBQ3RDLEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxRQUE4QixDQUFDLEVBQUUsQ0FBQztvQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUE4QixDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO1lBRUEsS0FBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsS0FBSzthQUNOLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
-
import { EggPrototype, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { ModelProtoManager } from './ModelProtoManager.
|
|
1
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
2
|
+
import { type EggPrototype, type EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { ModelProtoManager } from './ModelProtoManager.ts';
|
|
4
4
|
export declare class ModelProtoHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
|
|
5
5
|
private readonly modelProtoManager;
|
|
6
6
|
constructor(modelProtoManager: ModelProtoManager);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {} from '@eggjs/tegg';
|
|
2
|
+
import {} from '@eggjs/tegg-metadata';
|
|
3
|
+
import { IS_MODEL, ModelMetaBuilder, ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
4
|
+
import { ModelProtoManager } from "./ModelProtoManager.js";
|
|
5
|
+
export class ModelProtoHook {
|
|
6
|
+
constructor(modelProtoManager) {
|
|
7
|
+
this.modelProtoManager = modelProtoManager;
|
|
8
|
+
}
|
|
9
|
+
async postCreate(ctx, obj) {
|
|
10
|
+
if (!obj.getMetaData(IS_MODEL)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const builder = new ModelMetaBuilder(ctx.clazz);
|
|
14
|
+
const metadata = builder.build();
|
|
15
|
+
ModelMetadataUtil.setModelMetadata(ctx.clazz, metadata);
|
|
16
|
+
this.modelProtoManager.addProto(ctx.clazz, obj);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b0hvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL01vZGVsUHJvdG9Ib29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFZLGlCQUFvQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBaUMsRUFBRSxHQUFpQjtRQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRiJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { EggProtoImplClass } from '@eggjs/tegg';
|
|
1
|
+
import { type EggPrototype } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { type EggProtoImplClass } from '@eggjs/tegg';
|
|
3
3
|
export interface ModelProtoPair {
|
|
4
4
|
proto: EggPrototype;
|
|
5
5
|
clazz: EggProtoImplClass;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {} from '@eggjs/tegg-metadata';
|
|
2
|
+
import {} from '@eggjs/tegg';
|
|
3
|
+
export class ModelProtoManager {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.protos = [];
|
|
6
|
+
}
|
|
7
|
+
addProto(clazz, proto) {
|
|
8
|
+
this.protos.push({ proto, clazz });
|
|
9
|
+
}
|
|
10
|
+
getProtos() {
|
|
11
|
+
return this.protos.slice();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL01vZGVsUHJvdG9NYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBT3JELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDbUIsV0FBTSxHQUEwQixFQUFFLENBQUM7SUFTdEQsQ0FBQztJQVBDLFFBQVEsQ0FBQyxLQUF3QixFQUFFLEtBQW1CO1FBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { LifecycleHook } from '@eggjs/tegg';
|
|
2
|
-
import { LoadUnit, LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
1
|
+
import { type LifecycleHook } from '@eggjs/tegg';
|
|
2
|
+
import { type LoadUnit, type LoadUnitLifecycleContext } from '@eggjs/tegg-metadata';
|
|
3
3
|
export declare class ORMLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
4
4
|
postCreate(_ctx: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
5
5
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {} from '@eggjs/tegg';
|
|
2
|
+
import { EggLoadUnitType, EggPrototypeCreatorFactory, EggPrototypeFactory, } from '@eggjs/tegg-metadata';
|
|
3
|
+
import { Orm } from "./SingletonORM.js";
|
|
4
|
+
const REGISTER_CLAZZ = [
|
|
5
|
+
Orm,
|
|
6
|
+
];
|
|
7
|
+
export class ORMLoadUnitHook {
|
|
8
|
+
async postCreate(_ctx, loadUnit) {
|
|
9
|
+
if (loadUnit.type === EggLoadUnitType.APP) {
|
|
10
|
+
for (const clazz of REGISTER_CLAZZ) {
|
|
11
|
+
const protos = await EggPrototypeCreatorFactory.createProto(clazz, loadUnit);
|
|
12
|
+
for (const proto of protos) {
|
|
13
|
+
EggPrototypeFactory.instance.registerPrototype(proto, loadUnit);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT1JNTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9PUk1Mb2FkVW5pdEhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLDBCQUEwQixFQUMxQixtQkFBbUIsR0FHcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsTUFBTSxjQUFjLEdBQUc7SUFDckIsR0FBRztDQUNKLENBQUM7QUFFRixNQUFNLE9BQU8sZUFBZTtJQUMxQixLQUFLLENBQUMsVUFBVSxDQUFDLElBQThCLEVBQUUsUUFBa0I7UUFDakUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdFLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQzNCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EggObject } from '@eggjs/tegg-runtime';
|
|
2
|
-
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
-
import { EggPrototypeName, EggObjectName } from '@eggjs/tegg';
|
|
4
|
-
import { Id } from '@eggjs/tegg-lifecycle';
|
|
5
|
-
import { Bone } from 'leoric';
|
|
6
|
-
import SingletonModelProto from './SingletonModelProto.
|
|
1
|
+
import { type EggObject } from '@eggjs/tegg-runtime';
|
|
2
|
+
import type { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
+
import type { EggPrototypeName, EggObjectName } from '@eggjs/tegg';
|
|
4
|
+
import { type Id } from '@eggjs/tegg-lifecycle';
|
|
5
|
+
import type { Bone } from 'leoric';
|
|
6
|
+
import SingletonModelProto from './SingletonModelProto.ts';
|
|
7
7
|
export declare class SingletonModelObject implements EggObject {
|
|
8
8
|
private status;
|
|
9
9
|
id: Id;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ContextHandler, EggObjectStatus } from '@eggjs/tegg-runtime';
|
|
2
|
+
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
3
|
+
import { EGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
4
|
+
import SingletonModelProto from "./SingletonModelProto.js";
|
|
5
|
+
export class SingletonModelObject {
|
|
6
|
+
constructor(name, proto) {
|
|
7
|
+
this.status = EggObjectStatus.PENDING;
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.proto = proto;
|
|
10
|
+
this.id = IdenticalUtil.createObjectId(this.proto.id);
|
|
11
|
+
}
|
|
12
|
+
async init() {
|
|
13
|
+
const clazz = class ContextModelClass extends this.proto.model {
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
static get name() {
|
|
17
|
+
return super.name;
|
|
18
|
+
}
|
|
19
|
+
static get ctx() {
|
|
20
|
+
const ctx = ContextHandler.getContext();
|
|
21
|
+
if (ctx) {
|
|
22
|
+
return ctx.get(EGG_CONTEXT);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
get ctx() {
|
|
26
|
+
return ContextModelClass.ctx;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
this._obj = clazz;
|
|
30
|
+
this.status = EggObjectStatus.READY;
|
|
31
|
+
}
|
|
32
|
+
injectProperty() {
|
|
33
|
+
throw new Error('never call ModelObject#injectProperty');
|
|
34
|
+
}
|
|
35
|
+
get isReady() {
|
|
36
|
+
return this.status === EggObjectStatus.READY;
|
|
37
|
+
}
|
|
38
|
+
get obj() {
|
|
39
|
+
return this._obj;
|
|
40
|
+
}
|
|
41
|
+
static async createObject(name, proto) {
|
|
42
|
+
const modelObject = new SingletonModelObject(name, proto);
|
|
43
|
+
await modelObject.init();
|
|
44
|
+
return modelObject;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxPYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1NpbmdsZXRvbk1vZGVsT2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWtCLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RGLE9BQU8sRUFBVyxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxtQkFBbUIsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLFlBQVksSUFBbUIsRUFBRSxLQUEwQjtRQU5uRCxXQUFNLEdBQW9CLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFPeEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxLQUFLLEdBQUcsTUFBTSxpQkFBa0IsU0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDNUQsNkRBQTZEO1lBQzdELGFBQWE7WUFDYixNQUFNLEtBQUssSUFBSTtnQkFDYixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDcEIsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHO2dCQUNaLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDUixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxHQUFHO2dCQUNMLE9BQU8saUJBQWlCLENBQUMsR0FBRyxDQUFDO1lBQy9CLENBQUM7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFtQixFQUFFLEtBQW1CO1FBQ2hFLE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLEtBQTRCLENBQUMsQ0FBQztRQUNqRixNQUFNLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YifQ==
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { EggPrototype, LoadUnit, EggPrototypeLifecycleContext } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { AccessLevel, EggPrototypeName, ObjectInitType, QualifierInfo, MetaDataKey, QualifierAttribute, QualifierValue } from '@eggjs/tegg';
|
|
3
|
-
import { Id } from '@eggjs/tegg-lifecycle';
|
|
4
|
-
import { Bone } from 'leoric';
|
|
1
|
+
import type { EggPrototype, LoadUnit, EggPrototypeLifecycleContext, InjectObjectProto, InjectConstructorProto } from '@eggjs/tegg-metadata';
|
|
2
|
+
import { AccessLevel, type EggPrototypeName, ObjectInitType, type QualifierInfo, type MetaDataKey, type QualifierAttribute, type QualifierValue } from '@eggjs/tegg';
|
|
3
|
+
import { type Id } from '@eggjs/tegg-lifecycle';
|
|
4
|
+
import type { Bone } from 'leoric';
|
|
5
5
|
export default class SingletonModelProto implements EggPrototype {
|
|
6
6
|
[key: symbol]: PropertyDescriptor;
|
|
7
7
|
private readonly qualifiers;
|
|
8
8
|
readonly accessLevel = AccessLevel.PUBLIC;
|
|
9
9
|
id: Id;
|
|
10
10
|
readonly initType = ObjectInitType.SINGLETON;
|
|
11
|
-
readonly injectObjects:
|
|
11
|
+
readonly injectObjects: (InjectObjectProto | InjectConstructorProto)[];
|
|
12
12
|
readonly loadUnitId: string;
|
|
13
13
|
readonly moduleName: string;
|
|
14
14
|
readonly name: EggPrototypeName;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { AccessLevel, ObjectInitType, QualifierUtil, MetadataUtil, } from '@eggjs/tegg';
|
|
2
|
+
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
3
|
+
export default class SingletonModelProto {
|
|
4
|
+
constructor(loadUnit, model) {
|
|
5
|
+
this.accessLevel = AccessLevel.PUBLIC;
|
|
6
|
+
this.initType = ObjectInitType.SINGLETON;
|
|
7
|
+
this.injectObjects = [];
|
|
8
|
+
this.model = model;
|
|
9
|
+
this.id = IdenticalUtil.createProtoId(loadUnit.id, `leoric:${model.name}`);
|
|
10
|
+
this.loadUnitId = loadUnit.id;
|
|
11
|
+
this.moduleName = loadUnit.name;
|
|
12
|
+
this.name = model.name;
|
|
13
|
+
this.qualifiers = QualifierUtil.getProtoQualifiers(model);
|
|
14
|
+
}
|
|
15
|
+
constructEggObject() {
|
|
16
|
+
return {};
|
|
17
|
+
}
|
|
18
|
+
getMetaData(metadataKey) {
|
|
19
|
+
return MetadataUtil.getMetaData(metadataKey, this.model);
|
|
20
|
+
}
|
|
21
|
+
verifyQualifier(qualifier) {
|
|
22
|
+
const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
|
|
23
|
+
return selfQualifiers?.value === qualifier.value;
|
|
24
|
+
}
|
|
25
|
+
verifyQualifiers(qualifiers) {
|
|
26
|
+
for (const qualifier of qualifiers) {
|
|
27
|
+
if (!this.verifyQualifier(qualifier)) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
getQualifier(attribute) {
|
|
34
|
+
return this.qualifiers.find(t => t.attribute === attribute)?.value;
|
|
35
|
+
}
|
|
36
|
+
static createProto(ctx) {
|
|
37
|
+
return new SingletonModelProto(ctx.loadUnit, ctx.clazz);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxQcm90by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvU2luZ2xldG9uTW9kZWxQcm90by50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQ0wsV0FBVyxFQUVYLGNBQWMsRUFFZCxhQUFhLEVBQ2IsWUFBWSxHQUliLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBVyxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFtQjtJQVl0QyxZQUFZLFFBQWtCLEVBQUUsS0FBa0I7UUFUekMsZ0JBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBRWpDLGFBQVEsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBQ3BDLGtCQUFhLEdBQW1ELEVBQUUsQ0FBQztRQU8xRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxVQUFVLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsV0FBVyxDQUFJLFdBQXdCO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBMkI7UUFDMUMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQTZCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFpQztRQUNsRCxPQUFPLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBb0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiJ9
|
|
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import { AccessLevel, Inject, SingletonProto, } from '@eggjs/tegg';
|
|
11
|
-
import { LeoricRegister } from
|
|
11
|
+
import { LeoricRegister } from "./LeoricRegister.js";
|
|
12
12
|
let Orm = class Orm {
|
|
13
13
|
// default dataSource
|
|
14
14
|
get client() {
|
|
@@ -33,4 +33,4 @@ Orm = __decorate([
|
|
|
33
33
|
})
|
|
34
34
|
], Orm);
|
|
35
35
|
export { Orm };
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uT1JNLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9TaW5nbGV0b25PUk0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxNQUFNLEVBQ04sY0FBYyxHQUNmLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU05QyxJQUFNLEdBQUcsR0FBVCxNQUFNLEdBQUc7SUFJZCxxQkFBcUI7SUFDckIsSUFBSSxNQUFNO1FBQ1IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxTQUFTLENBQUMsVUFBa0I7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLFVBQVUsYUFBYSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFFLENBQUM7SUFDaEUsQ0FBQztDQUVGLENBQUE7QUFoQlM7SUFEUCxNQUFNLEVBQUU7OEJBQ2UsY0FBYzsyQ0FBQztBQUY1QixHQUFHO0lBSGYsY0FBYyxDQUFDO1FBQ2QsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxHQUFHLENBa0JmIn0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import '@eggjs/tegg-plugin/types';
|
|
2
|
+
import './app.ts';
|
|
3
|
+
import { type AttributeOptions } from '@eggjs/tegg-orm-decorator';
|
|
4
|
+
import type { DataType } from './lib/types.ts';
|
|
5
|
+
declare module '@eggjs/tegg-orm-decorator' {
|
|
6
|
+
function Attribute(dataType: DataType, options?: AttributeOptions): (target: any, propertyKey: PropertyKey) => void;
|
|
7
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import '@eggjs/tegg-plugin/types';
|
|
2
|
+
import "./app.js";
|
|
3
|
+
import {} from '@eggjs/tegg-orm-decorator';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQXlCLE1BQU0sMkJBQTJCLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"tegg"
|
|
7
7
|
]
|
|
8
8
|
},
|
|
9
|
-
"version": "4.0.0-beta.
|
|
9
|
+
"version": "4.0.0-beta.11",
|
|
10
10
|
"description": "orm decorator for egg",
|
|
11
11
|
"keywords": [
|
|
12
12
|
"egg",
|
|
@@ -18,35 +18,26 @@
|
|
|
18
18
|
"leoric"
|
|
19
19
|
],
|
|
20
20
|
"files": [
|
|
21
|
-
"
|
|
22
|
-
"app.d.ts",
|
|
23
|
-
"lib/**/*.js",
|
|
24
|
-
"lib/**/*.d.ts",
|
|
25
|
-
"app/**/*.js",
|
|
26
|
-
"app/**/*.d.ts",
|
|
27
|
-
"index.js",
|
|
28
|
-
"index.d.ts"
|
|
21
|
+
"dist"
|
|
29
22
|
],
|
|
30
23
|
"type": "module",
|
|
31
24
|
"exports": {
|
|
32
|
-
".":
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
".": "./dist/index.js",
|
|
26
|
+
"./app": "./dist/app.js",
|
|
27
|
+
"./config/config.default": "./dist/config/config.default.js",
|
|
28
|
+
"./lib/DataSourceManager": "./dist/lib/DataSourceManager.js",
|
|
29
|
+
"./lib/LeoricRegister": "./dist/lib/LeoricRegister.js",
|
|
30
|
+
"./lib/ModelProtoHook": "./dist/lib/ModelProtoHook.js",
|
|
31
|
+
"./lib/ModelProtoManager": "./dist/lib/ModelProtoManager.js",
|
|
32
|
+
"./lib/ORMLoadUnitHook": "./dist/lib/ORMLoadUnitHook.js",
|
|
33
|
+
"./lib/SingletonModelObject": "./dist/lib/SingletonModelObject.js",
|
|
34
|
+
"./lib/SingletonModelProto": "./dist/lib/SingletonModelProto.js",
|
|
35
|
+
"./lib/SingletonORM": "./dist/lib/SingletonORM.js",
|
|
36
|
+
"./lib/types": "./dist/lib/types.js",
|
|
37
|
+
"./types": "./dist/types.js",
|
|
36
38
|
"./package.json": "./package.json"
|
|
37
39
|
},
|
|
38
|
-
"
|
|
39
|
-
"pretest": "npm run prepare-test",
|
|
40
|
-
"test": "egg-bin test",
|
|
41
|
-
"precov": "npm run prepare-test",
|
|
42
|
-
"cov": "egg-bin cov",
|
|
43
|
-
"clean": "tsc -b --clean",
|
|
44
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.pub.json",
|
|
45
|
-
"tsc:pub": "npm run tsc",
|
|
46
|
-
"prepublishOnly": "npm run tsc",
|
|
47
|
-
"prepare-test": "node ./test/fixtures/prepare.js"
|
|
48
|
-
},
|
|
49
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
40
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/plugin/orm",
|
|
50
41
|
"bugs": {
|
|
51
42
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
52
43
|
},
|
|
@@ -56,36 +47,50 @@
|
|
|
56
47
|
"directory": "plugin/orm"
|
|
57
48
|
},
|
|
58
49
|
"engines": {
|
|
59
|
-
"node": ">=
|
|
50
|
+
"node": ">=22.18.0"
|
|
60
51
|
},
|
|
61
52
|
"dependencies": {
|
|
62
|
-
"@eggjs/core": "^6.4.0",
|
|
63
|
-
"@eggjs/egg-module-common": "^4.0.0-beta.1",
|
|
64
|
-
"@eggjs/tegg": "^4.0.0-beta.1",
|
|
65
|
-
"@eggjs/tegg-common-util": "^4.0.0-beta.1",
|
|
66
|
-
"@eggjs/tegg-lifecycle": "^4.0.0-beta.1",
|
|
67
|
-
"@eggjs/tegg-loader": "^4.0.0-beta.1",
|
|
68
|
-
"@eggjs/tegg-metadata": "^4.0.0-beta.1",
|
|
69
|
-
"@eggjs/tegg-orm-decorator": "^4.0.0-beta.1",
|
|
70
|
-
"@eggjs/tegg-runtime": "^4.0.0-beta.1",
|
|
71
53
|
"leoric": "^2.12.2",
|
|
72
|
-
"sdk-base": "^5.0.1"
|
|
54
|
+
"sdk-base": "^5.0.1",
|
|
55
|
+
"@eggjs/egg-module-common": "4.0.0-beta.11",
|
|
56
|
+
"@eggjs/tegg": "4.0.0-beta.11",
|
|
57
|
+
"@eggjs/tegg-lifecycle": "4.0.0-beta.11",
|
|
58
|
+
"@eggjs/tegg-metadata": "4.0.0-beta.11",
|
|
59
|
+
"@eggjs/tegg-runtime": "4.0.0-beta.11",
|
|
60
|
+
"@eggjs/tegg-orm-decorator": "4.0.0-beta.11"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"egg": "beta",
|
|
64
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.11"
|
|
73
65
|
},
|
|
74
66
|
"devDependencies": {
|
|
75
|
-
"@eggjs/
|
|
76
|
-
"@eggjs/
|
|
77
|
-
"@eggjs/
|
|
78
|
-
"@
|
|
79
|
-
"
|
|
80
|
-
"@types/
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
67
|
+
"@eggjs/bin": "beta",
|
|
68
|
+
"@eggjs/mock": "beta",
|
|
69
|
+
"@eggjs/tracer": "beta",
|
|
70
|
+
"@types/mocha": "^10.0.10",
|
|
71
|
+
"mocha": "^11.0.1",
|
|
72
|
+
"@types/node": "^22.10.5",
|
|
73
|
+
"egg": "beta",
|
|
74
|
+
"mysql2": "^3.12.0",
|
|
75
|
+
"typescript": "^5.9.3",
|
|
76
|
+
"tsdown": "^0.15.6",
|
|
77
|
+
"unplugin-unused": "^0.5.3",
|
|
78
|
+
"@eggjs/tegg-config": "4.0.0-beta.11",
|
|
79
|
+
"@eggjs/tegg-plugin": "4.0.0-beta.11",
|
|
80
|
+
"@eggjs/module-test-util": "4.0.0-beta.4"
|
|
86
81
|
},
|
|
87
82
|
"publishConfig": {
|
|
88
83
|
"access": "public"
|
|
89
84
|
},
|
|
90
|
-
"
|
|
91
|
-
|
|
85
|
+
"main": "./dist/index.js",
|
|
86
|
+
"module": "./dist/index.js",
|
|
87
|
+
"types": "./dist/index.d.ts",
|
|
88
|
+
"scripts": {
|
|
89
|
+
"test:mocha": "npm run prepare-test && egg-bin test",
|
|
90
|
+
"cov:mocha": "npm run prepare-test && egg-bin cov",
|
|
91
|
+
"clean": "rimraf dist *.tsbuildinfo",
|
|
92
|
+
"build": "tsdown && npm run clean && tsc -p tsconfig.build.json",
|
|
93
|
+
"typecheck": "tsc --noEmit",
|
|
94
|
+
"prepare-test": "node ./test/fixtures/prepare.js"
|
|
95
|
+
}
|
|
96
|
+
}
|
package/app.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { DataSourceManager } from './lib/DataSourceManager.js';
|
|
2
|
-
import { LeoricRegister } from './lib/LeoricRegister.js';
|
|
3
|
-
import { ModelProtoManager } from './lib/ModelProtoManager.js';
|
|
4
|
-
import { ModelProtoHook } from './lib/ModelProtoHook.js';
|
|
5
|
-
import { MODEL_PROTO_IMPL_TYPE } from '@eggjs/tegg-orm-decorator';
|
|
6
|
-
import SingletonModelProto from './lib/SingletonModelProto.js';
|
|
7
|
-
import { SingletonModelObject } from './lib/SingletonModelObject.js';
|
|
8
|
-
import { ORMLoadUnitHook } from './lib/ORMLoadUnitHook.js';
|
|
9
|
-
export default class OrmAppBootHook {
|
|
10
|
-
constructor(app) {
|
|
11
|
-
this.app = app;
|
|
12
|
-
this.dataSourceManager = new DataSourceManager();
|
|
13
|
-
this.modelProtoManager = new ModelProtoManager();
|
|
14
|
-
this.leoricRegister = new LeoricRegister(this.modelProtoManager, this.dataSourceManager);
|
|
15
|
-
this.modelProtoHook = new ModelProtoHook(this.modelProtoManager);
|
|
16
|
-
this.app.eggPrototypeCreatorFactory.registerPrototypeCreator(MODEL_PROTO_IMPL_TYPE, SingletonModelProto.createProto);
|
|
17
|
-
this.app.leoricRegister = this.leoricRegister;
|
|
18
|
-
this.ormLoadUnitHook = new ORMLoadUnitHook();
|
|
19
|
-
}
|
|
20
|
-
configWillLoad() {
|
|
21
|
-
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.modelProtoHook);
|
|
22
|
-
this.app.eggObjectFactory.registerEggObjectCreateMethod(SingletonModelProto, SingletonModelObject.createObject);
|
|
23
|
-
this.app.loadUnitLifecycleUtil.registerLifecycle(this.ormLoadUnitHook);
|
|
24
|
-
}
|
|
25
|
-
configDidLoad() {
|
|
26
|
-
const config = this.app.config.orm;
|
|
27
|
-
if (config.datasources) {
|
|
28
|
-
for (const datasource of config.datasources) {
|
|
29
|
-
this.dataSourceManager.addConfig(datasource);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
this.dataSourceManager.addDefaultConfig(config);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async didLoad() {
|
|
37
|
-
await this.app.moduleHandler.ready();
|
|
38
|
-
await this.leoricRegister.register();
|
|
39
|
-
}
|
|
40
|
-
async beforeClose() {
|
|
41
|
-
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.modelProtoHook);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxtQkFBbUIsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE9BQU8sT0FBTyxjQUFjO0lBUWpDLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JILElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNuQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0YifQ==
|
package/index.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import '@eggjs/tegg-plugin';
|
|
2
|
-
import { AttributeOptions } from '@eggjs/tegg-orm-decorator';
|
|
3
|
-
import { LeoricRegister } from './lib/LeoricRegister.js';
|
|
4
|
-
import { Orm } from './lib/SingletonORM.js';
|
|
5
|
-
import type { OrmConfig } from './lib/DataSourceManager.js';
|
|
6
|
-
import type { DataType } from './lib/types.js';
|
|
7
|
-
declare module '@eggjs/tegg-orm-decorator' {
|
|
8
|
-
function Attribute(dataType: DataType, options?: AttributeOptions): (target: any, propertyKey: PropertyKey) => void;
|
|
9
|
-
}
|
|
10
|
-
declare module '@eggjs/core' {
|
|
11
|
-
interface EggAppConfig {
|
|
12
|
-
orm: OrmConfig & {
|
|
13
|
-
datasources?: OrmConfig[];
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
interface EggCore {
|
|
17
|
-
leoricRegister: LeoricRegister;
|
|
18
|
-
orm: Orm;
|
|
19
|
-
}
|
|
20
|
-
}
|
package/index.js
DELETED
package/lib/DataSourceManager.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export class DataSourceManager {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.dataSourceConfigs = [];
|
|
4
|
-
}
|
|
5
|
-
addDefaultConfig(config) {
|
|
6
|
-
this.defaultDataSourceConfig = config;
|
|
7
|
-
}
|
|
8
|
-
getDefaultConfig() {
|
|
9
|
-
return this.defaultDataSourceConfig;
|
|
10
|
-
}
|
|
11
|
-
addConfig(config) {
|
|
12
|
-
this.dataSourceConfigs.push(config);
|
|
13
|
-
}
|
|
14
|
-
getConfig(name) {
|
|
15
|
-
if (this.defaultDataSourceConfig?.database === name) {
|
|
16
|
-
return this.defaultDataSourceConfig;
|
|
17
|
-
}
|
|
18
|
-
return this.dataSourceConfigs.find(t => t.database === name);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEYXRhU291cmNlTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0QkEsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWlCO1FBQ2hDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBaUI7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
|
package/lib/LeoricRegister.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Base } from 'sdk-base';
|
|
2
|
-
import Realm from 'leoric';
|
|
3
|
-
import { ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
4
|
-
export class LeoricRegister extends Base {
|
|
5
|
-
constructor(modelProtoManager, dataSourceManager) {
|
|
6
|
-
super();
|
|
7
|
-
this.modelProtoManager = modelProtoManager;
|
|
8
|
-
this.dataSourceManager = dataSourceManager;
|
|
9
|
-
this.realmMap = new Map();
|
|
10
|
-
}
|
|
11
|
-
getConfig(datasource) {
|
|
12
|
-
let config;
|
|
13
|
-
if (!datasource) {
|
|
14
|
-
config = this.dataSourceManager.getDefaultConfig();
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
config = this.dataSourceManager.getConfig(datasource);
|
|
18
|
-
}
|
|
19
|
-
return config;
|
|
20
|
-
}
|
|
21
|
-
getRealm(config) {
|
|
22
|
-
if (!config?.database) {
|
|
23
|
-
return undefined;
|
|
24
|
-
}
|
|
25
|
-
const realm = this.realmMap.get(config.database);
|
|
26
|
-
return realm;
|
|
27
|
-
}
|
|
28
|
-
getOrCreateRealm(datasource) {
|
|
29
|
-
const config = this.getConfig(datasource);
|
|
30
|
-
let realm;
|
|
31
|
-
if (config) {
|
|
32
|
-
realm = this.getRealm(config);
|
|
33
|
-
if (realm) {
|
|
34
|
-
return realm;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
realm = new Realm({ ...config });
|
|
38
|
-
this.realmMap.set(config.database, realm);
|
|
39
|
-
return realm;
|
|
40
|
-
}
|
|
41
|
-
generateLeoricAttributes(metadata) {
|
|
42
|
-
const attributes = {};
|
|
43
|
-
for (const attribute of metadata.attributes) {
|
|
44
|
-
attributes[attribute.propertyName] = {
|
|
45
|
-
columnName: attribute.attributeName,
|
|
46
|
-
type: attribute.dataType,
|
|
47
|
-
allowNull: attribute.allowNull,
|
|
48
|
-
primaryKey: attribute.primary,
|
|
49
|
-
unique: attribute.unique,
|
|
50
|
-
autoIncrement: attribute.autoIncrement,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
return attributes;
|
|
54
|
-
}
|
|
55
|
-
async register() {
|
|
56
|
-
for (const { proto, clazz } of this.modelProtoManager.getProtos()) {
|
|
57
|
-
const metadata = ModelMetadataUtil.getModelMetadata(clazz);
|
|
58
|
-
if (!metadata)
|
|
59
|
-
throw new Error(`not found metadata for model ${proto.id}`);
|
|
60
|
-
const realm = this.getOrCreateRealm(metadata.dataSource);
|
|
61
|
-
realm.models[clazz.name] = clazz;
|
|
62
|
-
realm[clazz.name] = clazz;
|
|
63
|
-
const attributes = this.generateLeoricAttributes(metadata);
|
|
64
|
-
const hooks = {};
|
|
65
|
-
for (const hookName of Realm.hookNames) {
|
|
66
|
-
if (clazz[hookName]) {
|
|
67
|
-
hooks[hookName] = clazz[hookName];
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
clazz.init(attributes, {
|
|
71
|
-
tableName: metadata.tableName,
|
|
72
|
-
hooks,
|
|
73
|
-
}, {});
|
|
74
|
-
}
|
|
75
|
-
await Promise.all(Array.from(this.realmMap.values())
|
|
76
|
-
.map(realm => realm.connect()));
|
|
77
|
-
this.ready(true);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVvcmljUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJMZW9yaWNSZWdpc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJN0UsTUFBTSxPQUFPLGNBQWUsU0FBUSxJQUFJO0lBS3RDLFlBQVksaUJBQW9DLEVBQUUsaUJBQW9DO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFtQjtRQUMzQixJQUFJLE1BQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTZCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUE4QjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksS0FBNEIsQ0FBQztRQUNqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxHQUFHLElBQUssS0FBYSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBTSxDQUFDLENBQUM7UUFDNUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBdUI7UUFDOUMsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUMzQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHO2dCQUNuQyxVQUFVLEVBQUUsU0FBUyxDQUFDLGFBQWE7Z0JBQ25DLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUTtnQkFDeEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO2dCQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzdCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtnQkFDeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO2FBQ3ZDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osS0FBSyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRCxNQUFNLEtBQUssR0FBd0IsRUFBRSxDQUFDO1lBQ3RDLEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLEtBQUssQ0FBQyxRQUE4QixDQUFDLEVBQUUsQ0FBQztvQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUE4QixDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO1lBRUEsS0FBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzlCLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztnQkFDN0IsS0FBSzthQUNOLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
|
package/lib/ModelProtoHook.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { IS_MODEL, ModelMetaBuilder, ModelMetadataUtil } from '@eggjs/tegg-orm-decorator';
|
|
2
|
-
export class ModelProtoHook {
|
|
3
|
-
constructor(modelProtoManager) {
|
|
4
|
-
this.modelProtoManager = modelProtoManager;
|
|
5
|
-
}
|
|
6
|
-
async postCreate(ctx, obj) {
|
|
7
|
-
if (!obj.getMetaData(IS_MODEL)) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const builder = new ModelMetaBuilder(ctx.clazz);
|
|
11
|
-
const metadata = builder.build();
|
|
12
|
-
ModelMetadataUtil.setModelMetadata(ctx.clazz, metadata);
|
|
13
|
-
this.modelProtoManager.addProto(ctx.clazz, obj);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b0hvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNb2RlbFByb3RvSG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHMUYsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBWSxpQkFBb0M7UUFDOUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQWlDLEVBQUUsR0FBaUI7UUFDbkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0YifQ==
|
package/lib/ModelProtoManager.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class ModelProtoManager {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.protos = [];
|
|
4
|
-
}
|
|
5
|
-
addProto(clazz, proto) {
|
|
6
|
-
this.protos.push({ proto, clazz });
|
|
7
|
-
}
|
|
8
|
-
getProtos() {
|
|
9
|
-
return this.protos.slice();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNb2RlbFByb3RvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBQ21CLFdBQU0sR0FBMEIsRUFBRSxDQUFDO0lBU3RELENBQUM7SUFQQyxRQUFRLENBQUMsS0FBd0IsRUFBRSxLQUFtQjtRQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRiJ9
|
package/lib/ORMLoadUnitHook.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { EggLoadUnitType, EggPrototypeCreatorFactory, EggPrototypeFactory, } from '@eggjs/tegg-metadata';
|
|
2
|
-
import { Orm } from './SingletonORM.js';
|
|
3
|
-
const REGISTER_CLAZZ = [
|
|
4
|
-
Orm,
|
|
5
|
-
];
|
|
6
|
-
export class ORMLoadUnitHook {
|
|
7
|
-
async postCreate(_ctx, loadUnit) {
|
|
8
|
-
if (loadUnit.type === EggLoadUnitType.APP) {
|
|
9
|
-
for (const clazz of REGISTER_CLAZZ) {
|
|
10
|
-
const protos = await EggPrototypeCreatorFactory.createProto(clazz, loadUnit);
|
|
11
|
-
for (const proto of protos) {
|
|
12
|
-
EggPrototypeFactory.instance.registerPrototype(proto, loadUnit);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT1JNTG9hZFVuaXRIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiT1JNTG9hZFVuaXRIb29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUdwQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxNQUFNLGNBQWMsR0FBRztJQUNyQixHQUFHO0NBQ0osQ0FBQztBQUVGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBOEIsRUFBRSxRQUFrQjtRQUNqRSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFDLEtBQUssTUFBTSxLQUFLLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0UsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDM0IsbUJBQW1CLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDbEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ContextHandler, EggObjectStatus, } from '@eggjs/tegg-runtime';
|
|
2
|
-
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
3
|
-
import { EGG_CONTEXT } from '@eggjs/egg-module-common';
|
|
4
|
-
export class SingletonModelObject {
|
|
5
|
-
constructor(name, proto) {
|
|
6
|
-
this.status = EggObjectStatus.PENDING;
|
|
7
|
-
this.name = name;
|
|
8
|
-
this.proto = proto;
|
|
9
|
-
this.id = IdenticalUtil.createObjectId(this.proto.id);
|
|
10
|
-
}
|
|
11
|
-
async init() {
|
|
12
|
-
const clazz = class ContextModelClass extends this.proto.model {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
14
|
-
// @ts-ignore
|
|
15
|
-
static get name() {
|
|
16
|
-
return super.name;
|
|
17
|
-
}
|
|
18
|
-
static get ctx() {
|
|
19
|
-
const ctx = ContextHandler.getContext();
|
|
20
|
-
if (ctx) {
|
|
21
|
-
return ctx.get(EGG_CONTEXT);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
get ctx() {
|
|
25
|
-
return ContextModelClass.ctx;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
this._obj = clazz;
|
|
29
|
-
this.status = EggObjectStatus.READY;
|
|
30
|
-
}
|
|
31
|
-
injectProperty() {
|
|
32
|
-
throw new Error('never call ModelObject#injectProperty');
|
|
33
|
-
}
|
|
34
|
-
get isReady() {
|
|
35
|
-
return this.status === EggObjectStatus.READY;
|
|
36
|
-
}
|
|
37
|
-
get obj() {
|
|
38
|
-
return this._obj;
|
|
39
|
-
}
|
|
40
|
-
static async createObject(name, proto) {
|
|
41
|
-
const modelObject = new SingletonModelObject(name, proto);
|
|
42
|
-
await modelObject.init();
|
|
43
|
-
return modelObject;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxPYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTaW5nbGV0b25Nb2RlbE9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUVkLGVBQWUsR0FDaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QixPQUFPLEVBQU0sYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBWSxJQUFtQixFQUFFLEtBQTBCO1FBTm5ELFdBQU0sR0FBb0IsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQU94RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEtBQUssR0FBRyxNQUFNLGlCQUFrQixTQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUM1RCw2REFBNkQ7WUFDN0QsYUFBYTtZQUNiLE1BQU0sS0FBSyxJQUFJO2dCQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUc7Z0JBQ1osTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUNSLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLEdBQUc7Z0JBQ0wsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUM7WUFDL0IsQ0FBQztTQUVGLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQW1CLEVBQUUsS0FBbUI7UUFDaEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBNEIsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FDRiJ9
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { AccessLevel, ObjectInitType, QualifierUtil, MetadataUtil, } from '@eggjs/tegg';
|
|
2
|
-
import { IdenticalUtil } from '@eggjs/tegg-lifecycle';
|
|
3
|
-
export default class SingletonModelProto {
|
|
4
|
-
constructor(loadUnit, model) {
|
|
5
|
-
this.accessLevel = AccessLevel.PUBLIC;
|
|
6
|
-
this.initType = ObjectInitType.SINGLETON;
|
|
7
|
-
this.injectObjects = [];
|
|
8
|
-
this.model = model;
|
|
9
|
-
this.id = IdenticalUtil.createProtoId(loadUnit.id, `leoric:${model.name}`);
|
|
10
|
-
this.loadUnitId = loadUnit.id;
|
|
11
|
-
this.moduleName = loadUnit.name;
|
|
12
|
-
this.name = model.name;
|
|
13
|
-
this.qualifiers = QualifierUtil.getProtoQualifiers(model);
|
|
14
|
-
}
|
|
15
|
-
constructEggObject() {
|
|
16
|
-
return {};
|
|
17
|
-
}
|
|
18
|
-
getMetaData(metadataKey) {
|
|
19
|
-
return MetadataUtil.getMetaData(metadataKey, this.model);
|
|
20
|
-
}
|
|
21
|
-
verifyQualifier(qualifier) {
|
|
22
|
-
const selfQualifiers = this.qualifiers.find(t => t.attribute === qualifier.attribute);
|
|
23
|
-
return selfQualifiers?.value === qualifier.value;
|
|
24
|
-
}
|
|
25
|
-
verifyQualifiers(qualifiers) {
|
|
26
|
-
for (const qualifier of qualifiers) {
|
|
27
|
-
if (!this.verifyQualifier(qualifier)) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
getQualifier(attribute) {
|
|
34
|
-
return this.qualifiers.find(t => t.attribute === attribute)?.value;
|
|
35
|
-
}
|
|
36
|
-
static createProto(ctx) {
|
|
37
|
-
return new SingletonModelProto(ctx.loadUnit, ctx.clazz);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xldG9uTW9kZWxQcm90by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNpbmdsZXRvbk1vZGVsUHJvdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFFWCxjQUFjLEVBRWQsYUFBYSxFQUNiLFlBQVksR0FFYixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQU0sYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBbUI7SUFZdEMsWUFBWSxRQUFrQixFQUFFLEtBQWtCO1FBVHpDLGdCQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUVqQyxhQUFRLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQU8xQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxVQUFVLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsV0FBVyxDQUFJLFdBQXdCO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixPQUFPLGNBQWMsRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBMkI7UUFDMUMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQTZCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFpQztRQUNsRCxPQUFPLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBb0IsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDRiJ9
|