@eggjs/orm-plugin 4.0.0-beta.35 → 4.0.0-beta.36
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/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorate.js +10 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/decorateMetadata.js +7 -0
- package/dist/app.d.ts +17 -13
- package/dist/app.js +37 -45
- package/dist/config/config.default.d.ts +8 -5
- package/dist/config/config.default.js +5 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +3 -3
- package/dist/lib/DataSourceManager.d.ts +21 -18
- package/dist/lib/DataSourceManager.js +22 -23
- package/dist/lib/LeoricRegister.d.ts +19 -15
- package/dist/lib/LeoricRegister.js +67 -84
- package/dist/lib/ModelProtoHook.d.ts +11 -7
- package/dist/lib/ModelProtoHook.js +17 -18
- package/dist/lib/ModelProtoManager.d.ts +13 -9
- package/dist/lib/ModelProtoManager.js +18 -10
- package/dist/lib/ORMLoadUnitHook.d.ts +8 -4
- package/dist/lib/ORMLoadUnitHook.js +14 -14
- package/dist/lib/SingletonModelObject.d.ts +25 -21
- package/dist/lib/SingletonModelObject.js +49 -53
- package/dist/lib/SingletonModelProto.d.ts +26 -22
- package/dist/lib/SingletonModelProto.js +39 -46
- package/dist/lib/SingletonORM.d.ts +9 -5
- package/dist/lib/SingletonORM.js +21 -35
- package/dist/lib/types.d.ts +7 -3
- package/dist/lib/types.js +1 -2
- package/dist/types.d.ts +22 -20
- package/dist/types.js +3 -2
- package/package.json +45 -49
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/decorate.js
|
|
2
|
+
function __decorate(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
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { __decorate };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.103.0/helpers/decorateMetadata.js
|
|
2
|
+
function __decorateMetadata(k, v) {
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { __decorateMetadata };
|
package/dist/app.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { Application, ILifecycleBoot } from "egg";
|
|
2
|
+
|
|
3
|
+
//#region src/app.d.ts
|
|
4
|
+
declare class OrmAppBootHook implements ILifecycleBoot {
|
|
5
|
+
private readonly app;
|
|
6
|
+
private readonly dataSourceManager;
|
|
7
|
+
private readonly leoricRegister;
|
|
8
|
+
private readonly modelProtoManager;
|
|
9
|
+
private readonly modelProtoHook;
|
|
10
|
+
private readonly ormLoadUnitHook;
|
|
11
|
+
constructor(app: Application);
|
|
12
|
+
configWillLoad(): void;
|
|
13
|
+
configDidLoad(): void;
|
|
14
|
+
didLoad(): Promise<void>;
|
|
15
|
+
beforeClose(): Promise<void>;
|
|
14
16
|
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { OrmAppBootHook as default };
|
package/dist/app.js
CHANGED
|
@@ -1,50 +1,42 @@
|
|
|
1
|
-
import { MODEL_PROTO_IMPL_TYPE } from '@eggjs/orm-decorator';
|
|
2
1
|
import { DataSourceManager } from "./lib/DataSourceManager.js";
|
|
2
|
+
import { ModelProtoManager } from "./lib/ModelProtoManager.js";
|
|
3
3
|
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
4
4
|
import { ModelProtoHook } from "./lib/ModelProtoHook.js";
|
|
5
|
-
import { ModelProtoManager } from "./lib/ModelProtoManager.js";
|
|
6
5
|
import { ORMLoadUnitHook } from "./lib/ORMLoadUnitHook.js";
|
|
7
|
-
import { SingletonModelObject } from "./lib/SingletonModelObject.js";
|
|
8
6
|
import SingletonModelProto from "./lib/SingletonModelProto.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
async beforeClose() {
|
|
47
|
-
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.modelProtoHook);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLG1CQUFtQixNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNoQixHQUFHLENBQWM7SUFDakIsaUJBQWlCLENBQW9CO0lBQ3JDLGNBQWMsQ0FBaUI7SUFDL0IsaUJBQWlCLENBQW9CO0lBQ3JDLGNBQWMsQ0FBaUI7SUFDL0IsZUFBZSxDQUFrQjtJQUVsRCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FDMUQscUJBQXFCLEVBQ3JCLG1CQUFtQixDQUFDLFdBQVcsQ0FDaEMsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNuQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQ0YifQ==
|
|
7
|
+
import { SingletonModelObject } from "./lib/SingletonModelObject.js";
|
|
8
|
+
import { MODEL_PROTO_IMPL_TYPE } from "@eggjs/orm-decorator";
|
|
9
|
+
|
|
10
|
+
//#region src/app.ts
|
|
11
|
+
var OrmAppBootHook = class {
|
|
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) for (const datasource of config.datasources) this.dataSourceManager.addConfig(datasource);
|
|
30
|
+
else this.dataSourceManager.addDefaultConfig(config);
|
|
31
|
+
}
|
|
32
|
+
async didLoad() {
|
|
33
|
+
await this.app.moduleHandler.ready();
|
|
34
|
+
await this.leoricRegister.register();
|
|
35
|
+
}
|
|
36
|
+
async beforeClose() {
|
|
37
|
+
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.modelProtoHook);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { OrmAppBootHook as default };
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { OrmConfig } from "../lib/DataSourceManager.js";
|
|
2
|
+
|
|
3
|
+
//#region src/config/config.default.d.ts
|
|
4
|
+
interface AppOrmConfig extends OrmConfig {
|
|
5
|
+
datasources?: OrmConfig[];
|
|
4
6
|
}
|
|
5
7
|
declare const _default: {
|
|
6
|
-
|
|
8
|
+
orm: AppOrmConfig;
|
|
7
9
|
};
|
|
8
|
-
|
|
10
|
+
//#endregion
|
|
11
|
+
export { AppOrmConfig, _default as default };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//#
|
|
1
|
+
//#region src/config/config.default.ts
|
|
2
|
+
var config_default_default = { orm: {} };
|
|
3
|
+
|
|
4
|
+
//#endregion
|
|
5
|
+
export { config_default_default as default };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
export {
|
|
1
|
+
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
2
|
+
import { Orm } from "./lib/SingletonORM.js";
|
|
3
|
+
import "./types.js";
|
|
4
|
+
export { LeoricRegister, Orm };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./types.js";
|
|
2
1
|
import { LeoricRegister } from "./lib/LeoricRegister.js";
|
|
3
2
|
import { Orm } from "./lib/SingletonORM.js";
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import "./types.js";
|
|
4
|
+
|
|
5
|
+
export { LeoricRegister, Orm };
|
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
//#region src/lib/DataSourceManager.d.ts
|
|
2
|
+
interface OrmConfig {
|
|
3
|
+
client: string;
|
|
4
|
+
database: string;
|
|
5
|
+
host: string;
|
|
6
|
+
port: number;
|
|
7
|
+
user: string;
|
|
8
|
+
define: object;
|
|
9
|
+
options: object;
|
|
10
|
+
charset: string;
|
|
11
|
+
[key: string]: any;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
declare class DataSourceManager {
|
|
14
|
+
private readonly dataSourceConfigs;
|
|
15
|
+
private defaultDataSourceConfig?;
|
|
16
|
+
constructor();
|
|
17
|
+
addDefaultConfig(config: OrmConfig): void;
|
|
18
|
+
getDefaultConfig(): OrmConfig | undefined;
|
|
19
|
+
addConfig(config: OrmConfig): void;
|
|
20
|
+
getConfig(name: string): OrmConfig | undefined;
|
|
20
21
|
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { DataSourceManager, OrmConfig };
|
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0RhdGFTb3VyY2VNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThCQSxNQUFNLE9BQU8saUJBQWlCO0lBQ1gsaUJBQWlCLENBQWM7SUFDeEMsdUJBQXVCLENBQWE7SUFFNUM7UUFDRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFpQjtRQUNoQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWlCO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRiJ9
|
|
1
|
+
//#region src/lib/DataSourceManager.ts
|
|
2
|
+
var DataSourceManager = class {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.dataSourceConfigs = [];
|
|
5
|
+
}
|
|
6
|
+
addDefaultConfig(config) {
|
|
7
|
+
this.defaultDataSourceConfig = config;
|
|
8
|
+
}
|
|
9
|
+
getDefaultConfig() {
|
|
10
|
+
return this.defaultDataSourceConfig;
|
|
11
|
+
}
|
|
12
|
+
addConfig(config) {
|
|
13
|
+
this.dataSourceConfigs.push(config);
|
|
14
|
+
}
|
|
15
|
+
getConfig(name) {
|
|
16
|
+
if (this.defaultDataSourceConfig?.database === name) return this.defaultDataSourceConfig;
|
|
17
|
+
return this.dataSourceConfigs.find((t) => t.database === name);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { DataSourceManager };
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { DataSourceManager, OrmConfig } from "./DataSourceManager.js";
|
|
2
|
+
import { ModelProtoManager } from "./ModelProtoManager.js";
|
|
3
|
+
import { RealmType } from "./types.js";
|
|
4
|
+
import { ModelMetadata } from "@eggjs/orm-decorator";
|
|
5
|
+
import { Base } from "sdk-base";
|
|
6
|
+
|
|
7
|
+
//#region src/lib/LeoricRegister.d.ts
|
|
8
|
+
declare class LeoricRegister extends Base {
|
|
9
|
+
private readonly modelProtoManager;
|
|
10
|
+
private readonly dataSourceManager;
|
|
11
|
+
readonly realmMap: Map<string, RealmType>;
|
|
12
|
+
constructor(modelProtoManager: ModelProtoManager, dataSourceManager: DataSourceManager);
|
|
13
|
+
getConfig(datasource?: string): OrmConfig | undefined;
|
|
14
|
+
getRealm(config: OrmConfig | undefined): RealmType | undefined;
|
|
15
|
+
getOrCreateRealm(datasource: string | undefined): any;
|
|
16
|
+
generateLeoricAttributes(metadata: ModelMetadata): Record<string, any>;
|
|
17
|
+
register(): Promise<void>;
|
|
16
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { LeoricRegister };
|
|
@@ -1,84 +1,67 @@
|
|
|
1
|
-
import { ModelMetadata, ModelMetadataUtil } from
|
|
2
|
-
import Realm from
|
|
3
|
-
import { Base } from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const attributes = this.generateLeoricAttributes(metadata);
|
|
69
|
-
const hooks = {};
|
|
70
|
-
for (const hookName of Realm.hookNames) {
|
|
71
|
-
if (clazz[hookName]) {
|
|
72
|
-
hooks[hookName] = clazz[hookName];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
clazz.init(attributes, {
|
|
76
|
-
tableName: metadata.tableName,
|
|
77
|
-
hooks,
|
|
78
|
-
}, {});
|
|
79
|
-
}
|
|
80
|
-
await Promise.all(Array.from(this.realmMap.values()).map((realm) => realm.connect()));
|
|
81
|
-
this.ready(true);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVvcmljUmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL0xlb3JpY1JlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEtBQUssTUFBTSxRQUFRLENBQUM7QUFDM0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtCLE1BQU0sd0JBQXdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHM0QsTUFBTSxPQUFPLGNBQWUsU0FBUSxJQUFJO0lBQ3JCLGlCQUFpQixDQUFvQjtJQUNyQyxpQkFBaUIsQ0FBb0I7SUFDN0MsUUFBUSxDQUF5QjtJQUUxQyxZQUFZLGlCQUFvQyxFQUFFLGlCQUFvQztRQUNwRixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxTQUFTLENBQUMsVUFBbUI7UUFDM0IsSUFBSSxNQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUE2QjtRQUNwQyxJQUFJ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
|
|
1
|
+
import { ModelMetadata, ModelMetadataUtil } from "@eggjs/orm-decorator";
|
|
2
|
+
import Realm from "leoric";
|
|
3
|
+
import { Base } from "sdk-base";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/LeoricRegister.ts
|
|
6
|
+
var LeoricRegister = class extends Base {
|
|
7
|
+
constructor(modelProtoManager, dataSourceManager) {
|
|
8
|
+
super();
|
|
9
|
+
this.modelProtoManager = modelProtoManager;
|
|
10
|
+
this.dataSourceManager = dataSourceManager;
|
|
11
|
+
this.realmMap = /* @__PURE__ */ new Map();
|
|
12
|
+
}
|
|
13
|
+
getConfig(datasource) {
|
|
14
|
+
let config;
|
|
15
|
+
if (!datasource) config = this.dataSourceManager.getDefaultConfig();
|
|
16
|
+
else config = this.dataSourceManager.getConfig(datasource);
|
|
17
|
+
return config;
|
|
18
|
+
}
|
|
19
|
+
getRealm(config) {
|
|
20
|
+
if (!config?.database) return;
|
|
21
|
+
return this.realmMap.get(config.database);
|
|
22
|
+
}
|
|
23
|
+
getOrCreateRealm(datasource) {
|
|
24
|
+
const config = this.getConfig(datasource);
|
|
25
|
+
let realm;
|
|
26
|
+
if (config) {
|
|
27
|
+
realm = this.getRealm(config);
|
|
28
|
+
if (realm) return realm;
|
|
29
|
+
}
|
|
30
|
+
realm = new Realm({ ...config });
|
|
31
|
+
this.realmMap.set(config.database, realm);
|
|
32
|
+
return realm;
|
|
33
|
+
}
|
|
34
|
+
generateLeoricAttributes(metadata) {
|
|
35
|
+
const attributes = {};
|
|
36
|
+
for (const attribute of metadata.attributes) attributes[attribute.propertyName] = {
|
|
37
|
+
columnName: attribute.attributeName,
|
|
38
|
+
type: attribute.dataType,
|
|
39
|
+
allowNull: attribute.allowNull,
|
|
40
|
+
primaryKey: attribute.primary,
|
|
41
|
+
unique: attribute.unique,
|
|
42
|
+
autoIncrement: attribute.autoIncrement
|
|
43
|
+
};
|
|
44
|
+
return attributes;
|
|
45
|
+
}
|
|
46
|
+
async register() {
|
|
47
|
+
for (const { proto, clazz } of this.modelProtoManager.getProtos()) {
|
|
48
|
+
const metadata = ModelMetadataUtil.getModelMetadata(clazz);
|
|
49
|
+
if (!metadata) throw new Error(`not found metadata for model ${proto.id}`);
|
|
50
|
+
const realm = this.getOrCreateRealm(metadata.dataSource);
|
|
51
|
+
realm.models[clazz.name] = clazz;
|
|
52
|
+
realm[clazz.name] = clazz;
|
|
53
|
+
const attributes = this.generateLeoricAttributes(metadata);
|
|
54
|
+
const hooks = {};
|
|
55
|
+
for (const hookName of Realm.hookNames) if (clazz[hookName]) hooks[hookName] = clazz[hookName];
|
|
56
|
+
clazz.init(attributes, {
|
|
57
|
+
tableName: metadata.tableName,
|
|
58
|
+
hooks
|
|
59
|
+
}, {});
|
|
60
|
+
}
|
|
61
|
+
await Promise.all(Array.from(this.realmMap.values()).map((realm) => realm.connect()));
|
|
62
|
+
this.ready(true);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
export { LeoricRegister };
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { ModelProtoManager } from "./ModelProtoManager.js";
|
|
2
|
+
import { EggPrototype, EggPrototypeLifecycleContext } from "@eggjs/metadata";
|
|
3
|
+
import { LifecycleHook } from "@eggjs/lifecycle";
|
|
4
|
+
|
|
5
|
+
//#region src/lib/ModelProtoHook.d.ts
|
|
6
|
+
declare class ModelProtoHook implements LifecycleHook<EggPrototypeLifecycleContext, EggPrototype> {
|
|
7
|
+
private readonly modelProtoManager;
|
|
8
|
+
constructor(modelProtoManager: ModelProtoManager);
|
|
9
|
+
postCreate(ctx: EggPrototypeLifecycleContext, obj: EggPrototype): Promise<void>;
|
|
8
10
|
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { ModelProtoHook };
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import { IS_MODEL, ModelMetaBuilder, ModelMetadataUtil } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxQcm90b0hvb2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL01vZGVsUHJvdG9Ib29rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxNQUFNLE9BQU8sY0FBYztJQUNSLGlCQUFpQixDQUFvQjtJQUV0RCxZQUFZLGlCQUFvQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBaUMsRUFBRSxHQUFpQjtRQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRiJ9
|
|
1
|
+
import { IS_MODEL, ModelMetaBuilder, ModelMetadataUtil } from "@eggjs/orm-decorator";
|
|
2
|
+
|
|
3
|
+
//#region src/lib/ModelProtoHook.ts
|
|
4
|
+
var ModelProtoHook = class {
|
|
5
|
+
constructor(modelProtoManager) {
|
|
6
|
+
this.modelProtoManager = modelProtoManager;
|
|
7
|
+
}
|
|
8
|
+
async postCreate(ctx, obj) {
|
|
9
|
+
if (!obj.getMetaData(IS_MODEL)) return;
|
|
10
|
+
const metadata = new ModelMetaBuilder(ctx.clazz).build();
|
|
11
|
+
ModelMetadataUtil.setModelMetadata(ctx.clazz, metadata);
|
|
12
|
+
this.modelProtoManager.addProto(ctx.clazz, obj);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ModelProtoHook };
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { EggPrototype } from "@eggjs/metadata";
|
|
2
|
+
import { EggProtoImplClass } from "@eggjs/core-decorator";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/ModelProtoManager.d.ts
|
|
5
|
+
interface ModelProtoPair {
|
|
6
|
+
proto: EggPrototype;
|
|
7
|
+
clazz: EggProtoImplClass;
|
|
6
8
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
declare class ModelProtoManager {
|
|
10
|
+
private readonly protos;
|
|
11
|
+
addProto(clazz: EggProtoImplClass, proto: EggPrototype): void;
|
|
12
|
+
getProtos(): Array<ModelProtoPair>;
|
|
11
13
|
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { ModelProtoManager, ModelProtoPair };
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
//#region src/lib/ModelProtoManager.ts
|
|
2
|
+
var ModelProtoManager = class {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.protos = [];
|
|
5
|
+
}
|
|
6
|
+
addProto(clazz, proto) {
|
|
7
|
+
this.protos.push({
|
|
8
|
+
proto,
|
|
9
|
+
clazz
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
getProtos() {
|
|
13
|
+
return this.protos.slice();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { ModelProtoManager };
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { LoadUnit, LoadUnitLifecycleContext } from "@eggjs/metadata";
|
|
2
|
+
import { LifecycleHook } from "@eggjs/lifecycle";
|
|
3
|
+
|
|
4
|
+
//#region src/lib/ORMLoadUnitHook.d.ts
|
|
5
|
+
declare class ORMLoadUnitHook implements LifecycleHook<LoadUnitLifecycleContext, LoadUnit> {
|
|
6
|
+
postCreate(_ctx: LoadUnitLifecycleContext, loadUnit: LoadUnit): Promise<void>;
|
|
5
7
|
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { ORMLoadUnitHook };
|