@eggjs/tegg-orm-decorator 4.0.0-beta.3 → 4.0.0-beta.5
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/dist/builder/AttributeMetaBuilder.d.ts +12 -0
- package/dist/builder/AttributeMetaBuilder.js +28 -0
- package/dist/builder/IndexMetaBuilder.d.ts +14 -0
- package/dist/builder/IndexMetaBuilder.js +32 -0
- package/dist/builder/ModelMetaBuilder.d.ts +11 -0
- package/dist/builder/ModelMetaBuilder.js +24 -0
- package/dist/builder/index.js +5 -0
- package/dist/decorator/Attribute.d.ts +6 -0
- package/dist/decorator/Attribute.js +15 -0
- package/dist/decorator/DataSource.d.ts +6 -0
- package/dist/decorator/DataSource.js +12 -0
- package/dist/decorator/Model.d.ts +6 -0
- package/dist/decorator/Model.js +22 -0
- package/dist/decorator/ModelIndex.d.ts +6 -0
- package/dist/decorator/ModelIndex.js +12 -0
- package/dist/decorator/index.js +6 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +20 -0
- package/dist/model/AttributeMeta.d.ts +13 -0
- package/dist/model/AttributeMeta.js +22 -0
- package/dist/model/IndexMeta.d.ts +10 -0
- package/dist/model/IndexMeta.js +16 -0
- package/dist/model/ModelMetadata.d.ts +13 -0
- package/dist/model/ModelMetadata.js +16 -0
- package/dist/util/ModelInfoUtil.d.ts +18 -0
- package/dist/util/ModelInfoUtil.js +45 -0
- package/dist/util/ModelMetadataUtil.d.ts +11 -0
- package/dist/util/ModelMetadataUtil.js +15 -0
- package/dist/util/NameUtil.d.ts +25 -0
- package/dist/util/NameUtil.js +36 -0
- package/dist/util/index.js +5 -0
- package/package.json +23 -28
- package/src/builder/AttributeMetaBuilder.d.ts +0 -8
- package/src/builder/AttributeMetaBuilder.js +0 -24
- package/src/builder/IndexMetaBuilder.d.ts +0 -9
- package/src/builder/IndexMetaBuilder.js +0 -33
- package/src/builder/ModelMetaBuilder.d.ts +0 -7
- package/src/builder/ModelMetaBuilder.js +0 -20
- package/src/builder/index.d.ts +0 -3
- package/src/builder/index.js +0 -4
- package/src/decorator/Attribute.d.ts +0 -2
- package/src/decorator/Attribute.js +0 -10
- package/src/decorator/DataSource.d.ts +0 -2
- package/src/decorator/DataSource.js +0 -7
- package/src/decorator/Model.d.ts +0 -2
- package/src/decorator/Model.js +0 -21
- package/src/decorator/ModelIndex.d.ts +0 -2
- package/src/decorator/ModelIndex.js +0 -7
- package/src/decorator/index.d.ts +0 -4
- package/src/decorator/index.js +0 -5
- package/src/index.d.ts +0 -5
- package/src/index.js +0 -6
- package/src/model/AttributeMeta.d.ts +0 -10
- package/src/model/AttributeMeta.js +0 -19
- package/src/model/IndexMeta.d.ts +0 -7
- package/src/model/IndexMeta.js +0 -13
- package/src/model/ModelMetadata.d.ts +0 -9
- package/src/model/ModelMetadata.js +0 -13
- package/src/model/index.d.ts +0 -3
- package/src/model/index.js +0 -4
- package/src/util/ModelInfoUtil.d.ts +0 -15
- package/src/util/ModelInfoUtil.js +0 -43
- package/src/util/ModelMetadataUtil.d.ts +0 -7
- package/src/util/ModelMetadataUtil.js +0 -11
- package/src/util/NameUtil.d.ts +0 -22
- package/src/util/NameUtil.js +0 -32
- package/src/util/index.d.ts +0 -3
- package/src/util/index.js +0 -4
package/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# `@eggjs/tegg-orm-decorator`
|
|
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-decorator.svg?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/@eggjs/tegg-orm-decorator
|
|
10
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/tegg-orm-decorator/badge.svg?style=flat-square
|
|
11
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/tegg-orm-decorator
|
|
12
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/tegg-orm-decorator.svg?style=flat-square
|
|
13
|
+
[download-url]: https://npmjs.org/package/@eggjs/tegg-orm-decorator
|
|
14
|
+
|
|
3
15
|
## Install
|
|
4
16
|
|
|
5
17
|
```shell
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AttributeMeta } from "../model/AttributeMeta.js";
|
|
2
|
+
import { EggProtoImplClass } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/builder/AttributeMetaBuilder.d.ts
|
|
5
|
+
declare class AttributeMetaBuilder {
|
|
6
|
+
private readonly clazz;
|
|
7
|
+
constructor(clazz: EggProtoImplClass);
|
|
8
|
+
build(): Array<AttributeMeta>;
|
|
9
|
+
private buildAttributeMeta;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { AttributeMetaBuilder };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AttributeMeta } from "../model/AttributeMeta.js";
|
|
2
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
3
|
+
import { NameUtil } from "../util/NameUtil.js";
|
|
4
|
+
import "../util/index.js";
|
|
5
|
+
|
|
6
|
+
//#region src/builder/AttributeMetaBuilder.ts
|
|
7
|
+
var AttributeMetaBuilder = class {
|
|
8
|
+
clazz;
|
|
9
|
+
constructor(clazz) {
|
|
10
|
+
this.clazz = clazz;
|
|
11
|
+
}
|
|
12
|
+
build() {
|
|
13
|
+
const modelAttributes = ModelInfoUtil.getModelAttributes(this.clazz);
|
|
14
|
+
const attributes = [];
|
|
15
|
+
if (!modelAttributes) throw new Error(`model ${this.clazz.name} has no attributes`);
|
|
16
|
+
for (const [propertyName, attributeInfo] of modelAttributes) {
|
|
17
|
+
const attribute = this.buildAttributeMeta(propertyName, attributeInfo);
|
|
18
|
+
attributes.push(attribute);
|
|
19
|
+
}
|
|
20
|
+
return attributes;
|
|
21
|
+
}
|
|
22
|
+
buildAttributeMeta(propertyName, attributeInfo) {
|
|
23
|
+
return new AttributeMeta(attributeInfo.dataType, propertyName, attributeInfo.options?.name ?? NameUtil.getAttributeName(propertyName), attributeInfo.options?.allowNull ?? true, attributeInfo.options?.autoIncrement ?? false, attributeInfo.options?.primary ?? false, attributeInfo.options?.unique ?? false);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { AttributeMetaBuilder };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AttributeMeta } from "../model/AttributeMeta.js";
|
|
2
|
+
import { IndexMeta } from "../model/IndexMeta.js";
|
|
3
|
+
import { EggProtoImplClass } from "@eggjs/tegg-types";
|
|
4
|
+
|
|
5
|
+
//#region src/builder/IndexMetaBuilder.d.ts
|
|
6
|
+
declare class IndexMetaBuilder {
|
|
7
|
+
private readonly clazz;
|
|
8
|
+
private readonly attributes;
|
|
9
|
+
constructor(clazz: EggProtoImplClass, attributes: Array<AttributeMeta>);
|
|
10
|
+
build(): Array<IndexMeta>;
|
|
11
|
+
private buildIndexMeta;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { IndexMetaBuilder };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { IndexMeta } from "../model/IndexMeta.js";
|
|
2
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
3
|
+
import { NameUtil } from "../util/NameUtil.js";
|
|
4
|
+
import "../util/index.js";
|
|
5
|
+
|
|
6
|
+
//#region src/builder/IndexMetaBuilder.ts
|
|
7
|
+
var IndexMetaBuilder = class {
|
|
8
|
+
clazz;
|
|
9
|
+
attributes;
|
|
10
|
+
constructor(clazz, attributes) {
|
|
11
|
+
this.clazz = clazz;
|
|
12
|
+
this.attributes = attributes;
|
|
13
|
+
}
|
|
14
|
+
build() {
|
|
15
|
+
return ModelInfoUtil.getModelIndices(this.clazz).map((indexInfo) => this.buildIndexMeta(indexInfo));
|
|
16
|
+
}
|
|
17
|
+
buildIndexMeta(indexInfo) {
|
|
18
|
+
const fields = [];
|
|
19
|
+
for (const field of indexInfo.fields) {
|
|
20
|
+
const attribute = this.attributes.find((t) => t.propertyName === field);
|
|
21
|
+
if (!attribute) throw new Error(`model ${this.clazz.name} has no attribute named ${field}`);
|
|
22
|
+
fields.push(attribute.attributeName);
|
|
23
|
+
}
|
|
24
|
+
let indexName;
|
|
25
|
+
if (indexInfo.options?.name) indexName = indexInfo.options.name;
|
|
26
|
+
else indexName = NameUtil.getIndexName(fields, { unique: indexInfo.options?.unique });
|
|
27
|
+
return new IndexMeta(indexName, fields, indexInfo.options?.unique ?? false, indexInfo.options?.primary ?? false);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { IndexMetaBuilder };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ModelMetadata } from "../model/ModelMetadata.js";
|
|
2
|
+
import { EggProtoImplClass } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/builder/ModelMetaBuilder.d.ts
|
|
5
|
+
declare class ModelMetaBuilder {
|
|
6
|
+
private readonly clazz;
|
|
7
|
+
constructor(clazz: EggProtoImplClass);
|
|
8
|
+
build(): ModelMetadata;
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { ModelMetaBuilder };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ModelMetadata } from "../model/ModelMetadata.js";
|
|
2
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
3
|
+
import { NameUtil } from "../util/NameUtil.js";
|
|
4
|
+
import "../util/index.js";
|
|
5
|
+
import { AttributeMetaBuilder } from "./AttributeMetaBuilder.js";
|
|
6
|
+
import { IndexMetaBuilder } from "./IndexMetaBuilder.js";
|
|
7
|
+
|
|
8
|
+
//#region src/builder/ModelMetaBuilder.ts
|
|
9
|
+
var ModelMetaBuilder = class {
|
|
10
|
+
clazz;
|
|
11
|
+
constructor(clazz) {
|
|
12
|
+
this.clazz = clazz;
|
|
13
|
+
}
|
|
14
|
+
build() {
|
|
15
|
+
const dataSource = ModelInfoUtil.getDataSource(this.clazz);
|
|
16
|
+
const tableName = ModelInfoUtil.getTableName(this.clazz) || NameUtil.getTableName(this.clazz.name);
|
|
17
|
+
const attributes = new AttributeMetaBuilder(this.clazz).build();
|
|
18
|
+
const indices = new IndexMetaBuilder(this.clazz, attributes).build();
|
|
19
|
+
return new ModelMetadata(dataSource, tableName, attributes, indices);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { ModelMetaBuilder };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
2
|
+
import "../util/index.js";
|
|
3
|
+
import assert from "node:assert";
|
|
4
|
+
|
|
5
|
+
//#region src/decorator/Attribute.ts
|
|
6
|
+
function Attribute(dataType, options) {
|
|
7
|
+
return function(target, propertyKey) {
|
|
8
|
+
const clazz = target.constructor;
|
|
9
|
+
assert(typeof propertyKey === "string", `[model/${clazz.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
10
|
+
ModelInfoUtil.addModelAttribute(dataType, options, clazz, propertyKey);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Attribute };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
2
|
+
import "../util/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/decorator/DataSource.ts
|
|
5
|
+
function DataSource(dataSource) {
|
|
6
|
+
return function(clazz) {
|
|
7
|
+
ModelInfoUtil.setDataSource(dataSource, clazz);
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { DataSource };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
2
|
+
import "../util/index.js";
|
|
3
|
+
import { SingletonProto } from "@eggjs/core-decorator";
|
|
4
|
+
import { AccessLevel, MODEL_PROTO_IMPL_TYPE } from "@eggjs/tegg-types";
|
|
5
|
+
|
|
6
|
+
//#region src/decorator/Model.ts
|
|
7
|
+
function Model(param) {
|
|
8
|
+
return function(clazz) {
|
|
9
|
+
ModelInfoUtil.setIsModel(true, clazz);
|
|
10
|
+
const func = SingletonProto({
|
|
11
|
+
name: clazz.name,
|
|
12
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
13
|
+
protoImplType: MODEL_PROTO_IMPL_TYPE
|
|
14
|
+
});
|
|
15
|
+
if (param?.tableName) ModelInfoUtil.setTableName(param.tableName, clazz);
|
|
16
|
+
if (param?.dataSource) ModelInfoUtil.setDataSource(param.dataSource, clazz);
|
|
17
|
+
func(clazz);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { Model };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ModelInfoUtil } from "../util/ModelInfoUtil.js";
|
|
2
|
+
import "../util/index.js";
|
|
3
|
+
|
|
4
|
+
//#region src/decorator/ModelIndex.ts
|
|
5
|
+
function Index(fields, params) {
|
|
6
|
+
return function(clazz) {
|
|
7
|
+
ModelInfoUtil.addModelIndex(fields, params, clazz);
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Index };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AttributeMeta } from "./model/AttributeMeta.js";
|
|
2
|
+
import { IndexMeta } from "./model/IndexMeta.js";
|
|
3
|
+
import { ModelMetadata } from "./model/ModelMetadata.js";
|
|
4
|
+
import { AttributeMetaBuilder } from "./builder/AttributeMetaBuilder.js";
|
|
5
|
+
import { IndexMetaBuilder } from "./builder/IndexMetaBuilder.js";
|
|
6
|
+
import { ModelMetaBuilder } from "./builder/ModelMetaBuilder.js";
|
|
7
|
+
import { Attribute } from "./decorator/Attribute.js";
|
|
8
|
+
import { DataSource } from "./decorator/DataSource.js";
|
|
9
|
+
import { Model } from "./decorator/Model.js";
|
|
10
|
+
import { Index } from "./decorator/ModelIndex.js";
|
|
11
|
+
import { ModelInfoUtil } from "./util/ModelInfoUtil.js";
|
|
12
|
+
import { MODEL_METADATA, ModelMetadataUtil } from "./util/ModelMetadataUtil.js";
|
|
13
|
+
import { NameUtil } from "./util/NameUtil.js";
|
|
14
|
+
export * from "@eggjs/tegg-types/orm";
|
|
15
|
+
export { Attribute, AttributeMeta, AttributeMetaBuilder, DataSource, Index, IndexMeta, IndexMetaBuilder, MODEL_METADATA, Model, ModelInfoUtil, ModelMetaBuilder, ModelMetadata, ModelMetadataUtil, NameUtil };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AttributeMeta } from "./model/AttributeMeta.js";
|
|
2
|
+
import { IndexMeta } from "./model/IndexMeta.js";
|
|
3
|
+
import { ModelMetadata } from "./model/ModelMetadata.js";
|
|
4
|
+
import { ModelInfoUtil } from "./util/ModelInfoUtil.js";
|
|
5
|
+
import { MODEL_METADATA, ModelMetadataUtil } from "./util/ModelMetadataUtil.js";
|
|
6
|
+
import { NameUtil } from "./util/NameUtil.js";
|
|
7
|
+
import "./util/index.js";
|
|
8
|
+
import { AttributeMetaBuilder } from "./builder/AttributeMetaBuilder.js";
|
|
9
|
+
import { IndexMetaBuilder } from "./builder/IndexMetaBuilder.js";
|
|
10
|
+
import { ModelMetaBuilder } from "./builder/ModelMetaBuilder.js";
|
|
11
|
+
import "./builder/index.js";
|
|
12
|
+
import { Attribute } from "./decorator/Attribute.js";
|
|
13
|
+
import { DataSource } from "./decorator/DataSource.js";
|
|
14
|
+
import { Model } from "./decorator/Model.js";
|
|
15
|
+
import { Index } from "./decorator/ModelIndex.js";
|
|
16
|
+
import "./decorator/index.js";
|
|
17
|
+
|
|
18
|
+
export * from "@eggjs/tegg-types/orm"
|
|
19
|
+
|
|
20
|
+
export { Attribute, AttributeMeta, AttributeMetaBuilder, DataSource, Index, IndexMeta, IndexMetaBuilder, MODEL_METADATA, Model, ModelInfoUtil, ModelMetaBuilder, ModelMetadata, ModelMetadataUtil, NameUtil };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/model/AttributeMeta.d.ts
|
|
2
|
+
declare class AttributeMeta {
|
|
3
|
+
readonly dataType: string;
|
|
4
|
+
readonly propertyName: string;
|
|
5
|
+
readonly attributeName: string;
|
|
6
|
+
readonly allowNull: boolean;
|
|
7
|
+
readonly autoIncrement: boolean;
|
|
8
|
+
readonly primary: boolean;
|
|
9
|
+
readonly unique: boolean;
|
|
10
|
+
constructor(dataType: string, propertyName: string, attributeName: string, allowNull: boolean, autoIncrement: boolean, primary: boolean, unique: boolean);
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { AttributeMeta };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/model/AttributeMeta.ts
|
|
2
|
+
var AttributeMeta = class {
|
|
3
|
+
dataType;
|
|
4
|
+
propertyName;
|
|
5
|
+
attributeName;
|
|
6
|
+
allowNull;
|
|
7
|
+
autoIncrement;
|
|
8
|
+
primary;
|
|
9
|
+
unique;
|
|
10
|
+
constructor(dataType, propertyName, attributeName, allowNull, autoIncrement, primary, unique) {
|
|
11
|
+
this.dataType = dataType;
|
|
12
|
+
this.propertyName = propertyName;
|
|
13
|
+
this.attributeName = attributeName;
|
|
14
|
+
this.allowNull = allowNull;
|
|
15
|
+
this.autoIncrement = autoIncrement;
|
|
16
|
+
this.primary = primary;
|
|
17
|
+
this.unique = unique;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { AttributeMeta };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/model/IndexMeta.d.ts
|
|
2
|
+
declare class IndexMeta {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly fields: string[];
|
|
5
|
+
readonly unique: boolean;
|
|
6
|
+
readonly primary: boolean;
|
|
7
|
+
constructor(name: string, fields: string[], unique: boolean, primary: boolean);
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { IndexMeta };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/model/IndexMeta.ts
|
|
2
|
+
var IndexMeta = class {
|
|
3
|
+
name;
|
|
4
|
+
fields;
|
|
5
|
+
unique;
|
|
6
|
+
primary;
|
|
7
|
+
constructor(name, fields, unique, primary) {
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.fields = fields;
|
|
10
|
+
this.unique = unique;
|
|
11
|
+
this.primary = primary;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { IndexMeta };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AttributeMeta } from "./AttributeMeta.js";
|
|
2
|
+
import { IndexMeta } from "./IndexMeta.js";
|
|
3
|
+
|
|
4
|
+
//#region src/model/ModelMetadata.d.ts
|
|
5
|
+
declare class ModelMetadata {
|
|
6
|
+
readonly dataSource: string | undefined;
|
|
7
|
+
readonly tableName: string;
|
|
8
|
+
readonly attributes: Array<AttributeMeta>;
|
|
9
|
+
readonly indices: Array<IndexMeta>;
|
|
10
|
+
constructor(dataSource: string | undefined, tableName: string, attributes: Array<AttributeMeta>, indices: Array<IndexMeta>);
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ModelMetadata };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/model/ModelMetadata.ts
|
|
2
|
+
var ModelMetadata = class {
|
|
3
|
+
dataSource;
|
|
4
|
+
tableName;
|
|
5
|
+
attributes;
|
|
6
|
+
indices;
|
|
7
|
+
constructor(dataSource, tableName, attributes, indices) {
|
|
8
|
+
this.dataSource = dataSource;
|
|
9
|
+
this.tableName = tableName;
|
|
10
|
+
this.attributes = attributes;
|
|
11
|
+
this.indices = indices;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ModelMetadata };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AttributeOptions, EggProtoImplClass, IndexOptions, ModelAttributeInfo, ModelIndexInfo } from "@eggjs/tegg-types";
|
|
2
|
+
|
|
3
|
+
//#region src/util/ModelInfoUtil.d.ts
|
|
4
|
+
type ModelAttributeMap = Map<string, ModelAttributeInfo>;
|
|
5
|
+
declare class ModelInfoUtil {
|
|
6
|
+
static setIsModel(isModel: boolean, clazz: EggProtoImplClass): void;
|
|
7
|
+
static getIsModel(clazz: EggProtoImplClass): boolean;
|
|
8
|
+
static setDataSource(dataSource: string, clazz: EggProtoImplClass): void;
|
|
9
|
+
static getDataSource(clazz: EggProtoImplClass): string | undefined;
|
|
10
|
+
static setTableName(tableName: string, clazz: EggProtoImplClass): void;
|
|
11
|
+
static getTableName(clazz: EggProtoImplClass): string | undefined;
|
|
12
|
+
static addModelIndex(fields: string[], options: IndexOptions | undefined, clazz: EggProtoImplClass): void;
|
|
13
|
+
static getModelIndices(clazz: EggProtoImplClass): Array<ModelIndexInfo>;
|
|
14
|
+
static addModelAttribute(dataType: string, options: AttributeOptions | undefined, clazz: EggProtoImplClass, property: string): void;
|
|
15
|
+
static getModelAttributes(clazz: EggProtoImplClass): ModelAttributeMap | undefined;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { ModelInfoUtil };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { MetadataUtil } from "@eggjs/core-decorator";
|
|
2
|
+
import { IS_MODEL, MODEL_DATA_ATTRIBUTES, MODEL_DATA_INDICES, MODEL_DATA_SOURCE, MODEL_DATA_TABLE_NAME } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/util/ModelInfoUtil.ts
|
|
5
|
+
var ModelInfoUtil = class {
|
|
6
|
+
static setIsModel(isModel, clazz) {
|
|
7
|
+
MetadataUtil.defineMetaData(IS_MODEL, isModel, clazz);
|
|
8
|
+
}
|
|
9
|
+
static getIsModel(clazz) {
|
|
10
|
+
return MetadataUtil.getBooleanMetaData(IS_MODEL, clazz);
|
|
11
|
+
}
|
|
12
|
+
static setDataSource(dataSource, clazz) {
|
|
13
|
+
MetadataUtil.defineMetaData(MODEL_DATA_SOURCE, dataSource, clazz);
|
|
14
|
+
}
|
|
15
|
+
static getDataSource(clazz) {
|
|
16
|
+
return MetadataUtil.getMetaData(MODEL_DATA_SOURCE, clazz);
|
|
17
|
+
}
|
|
18
|
+
static setTableName(tableName, clazz) {
|
|
19
|
+
MetadataUtil.defineMetaData(MODEL_DATA_TABLE_NAME, tableName, clazz);
|
|
20
|
+
}
|
|
21
|
+
static getTableName(clazz) {
|
|
22
|
+
return MetadataUtil.getMetaData(MODEL_DATA_TABLE_NAME, clazz);
|
|
23
|
+
}
|
|
24
|
+
static addModelIndex(fields, options, clazz) {
|
|
25
|
+
MetadataUtil.initOwnArrayMetaData(MODEL_DATA_INDICES, clazz, []).push({
|
|
26
|
+
fields,
|
|
27
|
+
options
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
static getModelIndices(clazz) {
|
|
31
|
+
return MetadataUtil.getArrayMetaData(MODEL_DATA_INDICES, clazz);
|
|
32
|
+
}
|
|
33
|
+
static addModelAttribute(dataType, options, clazz, property) {
|
|
34
|
+
MetadataUtil.initOwnMapMetaData(MODEL_DATA_ATTRIBUTES, clazz, /* @__PURE__ */ new Map()).set(property, {
|
|
35
|
+
dataType,
|
|
36
|
+
options
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
static getModelAttributes(clazz) {
|
|
40
|
+
return MetadataUtil.getMetaData(MODEL_DATA_ATTRIBUTES, clazz);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
export { ModelInfoUtil };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ModelMetadata } from "../model/ModelMetadata.js";
|
|
2
|
+
import { EggProtoImplClass } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/util/ModelMetadataUtil.d.ts
|
|
5
|
+
declare const MODEL_METADATA: unique symbol;
|
|
6
|
+
declare class ModelMetadataUtil {
|
|
7
|
+
static setModelMetadata(clazz: EggProtoImplClass, metaData: ModelMetadata): void;
|
|
8
|
+
static getModelMetadata(clazz: EggProtoImplClass): ModelMetadata | undefined;
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { MODEL_METADATA, ModelMetadataUtil };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MetadataUtil } from "@eggjs/core-decorator";
|
|
2
|
+
|
|
3
|
+
//#region src/util/ModelMetadataUtil.ts
|
|
4
|
+
const MODEL_METADATA = Symbol.for("EggPrototype#model#metadata");
|
|
5
|
+
var ModelMetadataUtil = class {
|
|
6
|
+
static setModelMetadata(clazz, metaData) {
|
|
7
|
+
MetadataUtil.defineMetaData(MODEL_METADATA, metaData, clazz);
|
|
8
|
+
}
|
|
9
|
+
static getModelMetadata(clazz) {
|
|
10
|
+
return MetadataUtil.getMetaData(MODEL_METADATA, clazz);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { MODEL_METADATA, ModelMetadataUtil };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/util/NameUtil.d.ts
|
|
2
|
+
declare class NameUtil {
|
|
3
|
+
/**
|
|
4
|
+
* get table name
|
|
5
|
+
* StudentScore -> student_scores
|
|
6
|
+
*/
|
|
7
|
+
static getTableName(modelName: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* get attribute name
|
|
10
|
+
* userName -> user_name
|
|
11
|
+
*/
|
|
12
|
+
static getAttributeName(propertyName: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* [ 'user_name' ], unique
|
|
15
|
+
* uk_user_name
|
|
16
|
+
*
|
|
17
|
+
* [ 'user_name', 'gender' ]
|
|
18
|
+
* idx_user_name_gender
|
|
19
|
+
*/
|
|
20
|
+
static getIndexName(fields: string[], options?: {
|
|
21
|
+
unique?: boolean;
|
|
22
|
+
}): string;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { NameUtil };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import _ from "lodash";
|
|
2
|
+
import pluralize from "pluralize";
|
|
3
|
+
|
|
4
|
+
//#region src/util/NameUtil.ts
|
|
5
|
+
var NameUtil = class {
|
|
6
|
+
/**
|
|
7
|
+
* get table name
|
|
8
|
+
* StudentScore -> student_scores
|
|
9
|
+
*/
|
|
10
|
+
static getTableName(modelName) {
|
|
11
|
+
const modelNames = pluralize(modelName);
|
|
12
|
+
return _.snakeCase(modelNames);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* get attribute name
|
|
16
|
+
* userName -> user_name
|
|
17
|
+
*/
|
|
18
|
+
static getAttributeName(propertyName) {
|
|
19
|
+
return _.snakeCase(propertyName);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* [ 'user_name' ], unique
|
|
23
|
+
* uk_user_name
|
|
24
|
+
*
|
|
25
|
+
* [ 'user_name', 'gender' ]
|
|
26
|
+
* idx_user_name_gender
|
|
27
|
+
*/
|
|
28
|
+
static getIndexName(fields, options) {
|
|
29
|
+
const prefix = options?.unique ? "uk_" : "idx_";
|
|
30
|
+
const names = fields.join("_");
|
|
31
|
+
return prefix + names;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { NameUtil };
|
package/package.json
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-orm-decorator",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.5",
|
|
4
4
|
"description": "tegg orm decorator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
|
-
".":
|
|
8
|
-
|
|
9
|
-
"default": "./src/index.js"
|
|
10
|
-
}
|
|
7
|
+
".": "./dist/index.js",
|
|
8
|
+
"./package.json": "./package.json"
|
|
11
9
|
},
|
|
12
10
|
"files": [
|
|
13
|
-
"
|
|
14
|
-
"src/**/*.d.ts"
|
|
11
|
+
"dist"
|
|
15
12
|
],
|
|
16
13
|
"keywords": [
|
|
17
14
|
"egg",
|
|
@@ -19,15 +16,9 @@
|
|
|
19
16
|
"runtime",
|
|
20
17
|
"tegg"
|
|
21
18
|
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"clean": "tsc -b --clean",
|
|
24
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.json",
|
|
25
|
-
"tsc:pub": "npm run tsc",
|
|
26
|
-
"prepublishOnly": "npm run tsc"
|
|
27
|
-
},
|
|
28
19
|
"author": "killagu <killa123@126.com>",
|
|
29
20
|
"license": "MIT",
|
|
30
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
21
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/core/orm-decorator",
|
|
31
22
|
"bugs": {
|
|
32
23
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
33
24
|
},
|
|
@@ -37,27 +28,31 @@
|
|
|
37
28
|
"directory": "core/orm-decorator"
|
|
38
29
|
},
|
|
39
30
|
"engines": {
|
|
40
|
-
"node": ">=
|
|
31
|
+
"node": ">=22.18.0"
|
|
41
32
|
},
|
|
42
33
|
"dependencies": {
|
|
43
|
-
"@eggjs/core-decorator": "^4.0.0-beta.3",
|
|
44
|
-
"@eggjs/tegg-common-util": "^4.0.0-beta.3",
|
|
45
|
-
"@eggjs/tegg-metadata": "^4.0.0-beta.3",
|
|
46
|
-
"@eggjs/tegg-types": "^4.0.0-beta.3",
|
|
47
34
|
"lodash": "^4.17.21",
|
|
48
|
-
"pluralize": "^8.0.0"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"leoric": "^2.6.1"
|
|
35
|
+
"pluralize": "^8.0.0",
|
|
36
|
+
"@eggjs/core-decorator": "4.0.0-beta.5",
|
|
37
|
+
"@eggjs/tegg-types": "4.0.0-beta.5"
|
|
52
38
|
},
|
|
53
39
|
"publishConfig": {
|
|
54
40
|
"access": "public"
|
|
55
41
|
},
|
|
56
42
|
"devDependencies": {
|
|
57
|
-
"@types/
|
|
43
|
+
"@types/lodash": "^4.17.20",
|
|
44
|
+
"@types/node": "^22.10.5",
|
|
58
45
|
"@types/pluralize": "^0.0.33",
|
|
59
|
-
"
|
|
60
|
-
"typescript": "5"
|
|
46
|
+
"tsdown": "^0.15.6",
|
|
47
|
+
"typescript": "^5.9.3",
|
|
48
|
+
"unplugin-unused": "^0.5.3"
|
|
61
49
|
},
|
|
62
|
-
"
|
|
63
|
-
|
|
50
|
+
"main": "./dist/index.js",
|
|
51
|
+
"module": "./dist/index.js",
|
|
52
|
+
"types": "./dist/index.d.ts",
|
|
53
|
+
"scripts": {
|
|
54
|
+
"clean": "rimraf dist",
|
|
55
|
+
"build": "tsdown",
|
|
56
|
+
"typecheck": "tsc --noEmit"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
|
-
import { AttributeMeta } from '../model/index.js';
|
|
3
|
-
export declare class AttributeMetaBuilder {
|
|
4
|
-
private readonly clazz;
|
|
5
|
-
constructor(clazz: EggProtoImplClass);
|
|
6
|
-
build(): Array<AttributeMeta>;
|
|
7
|
-
private buildAttributeMeta;
|
|
8
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { AttributeMeta } from '../model/index.js';
|
|
2
|
-
import { ModelInfoUtil, NameUtil } from '../util/index.js';
|
|
3
|
-
export class AttributeMetaBuilder {
|
|
4
|
-
clazz;
|
|
5
|
-
constructor(clazz) {
|
|
6
|
-
this.clazz = clazz;
|
|
7
|
-
}
|
|
8
|
-
build() {
|
|
9
|
-
const modelAttributes = ModelInfoUtil.getModelAttributes(this.clazz);
|
|
10
|
-
const attributes = [];
|
|
11
|
-
if (!modelAttributes) {
|
|
12
|
-
throw new Error(`model ${this.clazz.name} has no attributes`);
|
|
13
|
-
}
|
|
14
|
-
for (const [propertyName, attributeInfo] of modelAttributes) {
|
|
15
|
-
const attribute = this.buildAttributeMeta(propertyName, attributeInfo);
|
|
16
|
-
attributes.push(attribute);
|
|
17
|
-
}
|
|
18
|
-
return attributes;
|
|
19
|
-
}
|
|
20
|
-
buildAttributeMeta(propertyName, attributeInfo) {
|
|
21
|
-
return new AttributeMeta(attributeInfo.dataType, propertyName, attributeInfo.options?.name ?? NameUtil.getAttributeName(propertyName), attributeInfo.options?.allowNull ?? true, attributeInfo.options?.autoIncrement ?? false, attributeInfo.options?.primary ?? false, attributeInfo.options?.unique ?? false);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlTWV0YUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBdHRyaWJ1dGVNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRCxNQUFNLE9BQU8sb0JBQW9CO0lBQ2QsS0FBSyxDQUFvQjtJQUUxQyxZQUFZLEtBQXdCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRSxNQUFNLFVBQVUsR0FBeUIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLG9CQUFvQixDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFFLFlBQVksRUFBRSxhQUFhLENBQUUsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM5RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxZQUFvQixFQUFFLGFBQWlDO1FBQ2hGLE9BQU8sSUFBSSxhQUFhLENBQ3RCLGFBQWEsQ0FBQyxRQUFRLEVBQ3RCLFlBQVksRUFDWixhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQ3RFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLElBQUksRUFDeEMsYUFBYSxDQUFDLE9BQU8sRUFBRSxhQUFhLElBQUksS0FBSyxFQUM3QyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQ3ZDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FDdkMsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
|
-
import { IndexMeta, AttributeMeta } from '../model/index.js';
|
|
3
|
-
export declare class IndexMetaBuilder {
|
|
4
|
-
private readonly clazz;
|
|
5
|
-
private readonly attributes;
|
|
6
|
-
constructor(clazz: EggProtoImplClass, attributes: Array<AttributeMeta>);
|
|
7
|
-
build(): Array<IndexMeta>;
|
|
8
|
-
private buildIndexMeta;
|
|
9
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { IndexMeta } from '../model/index.js';
|
|
2
|
-
import { ModelInfoUtil, NameUtil } from '../util/index.js';
|
|
3
|
-
export class IndexMetaBuilder {
|
|
4
|
-
clazz;
|
|
5
|
-
attributes;
|
|
6
|
-
constructor(clazz, attributes) {
|
|
7
|
-
this.clazz = clazz;
|
|
8
|
-
this.attributes = attributes;
|
|
9
|
-
}
|
|
10
|
-
build() {
|
|
11
|
-
return ModelInfoUtil.getModelIndices(this.clazz)
|
|
12
|
-
.map(indexInfo => this.buildIndexMeta(indexInfo));
|
|
13
|
-
}
|
|
14
|
-
buildIndexMeta(indexInfo) {
|
|
15
|
-
const fields = [];
|
|
16
|
-
for (const field of indexInfo.fields) {
|
|
17
|
-
const attribute = this.attributes.find(t => t.propertyName === field);
|
|
18
|
-
if (!attribute) {
|
|
19
|
-
throw new Error(`model ${this.clazz.name} has no attribute named ${field}`);
|
|
20
|
-
}
|
|
21
|
-
fields.push(attribute.attributeName);
|
|
22
|
-
}
|
|
23
|
-
let indexName;
|
|
24
|
-
if (indexInfo.options?.name) {
|
|
25
|
-
indexName = indexInfo.options.name;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
indexName = NameUtil.getIndexName(fields, { unique: indexInfo.options?.unique });
|
|
29
|
-
}
|
|
30
|
-
return new IndexMeta(indexName, fields, indexInfo.options?.unique ?? false, indexInfo.options?.primary ?? false);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kZXhNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkluZGV4TWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTNELE1BQU0sT0FBTyxnQkFBZ0I7SUFDVixLQUFLLENBQW9CO0lBQ3pCLFVBQVUsQ0FBdUI7SUFFbEQsWUFBWSxLQUF3QixFQUFFLFVBQWdDO1FBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDN0MsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxjQUFjLENBQUMsU0FBeUI7UUFDOUMsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSwyQkFBMkIsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksU0FBaUIsQ0FBQztRQUN0QixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDNUIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsT0FBTyxJQUFJLFNBQVMsQ0FDbEIsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxLQUFLLEVBQ2xDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRiJ9
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ModelMetadata } from '../model/index.js';
|
|
2
|
-
import { ModelInfoUtil, NameUtil } from '../util/index.js';
|
|
3
|
-
import { IndexMetaBuilder } from './IndexMetaBuilder.js';
|
|
4
|
-
import { AttributeMetaBuilder } from './AttributeMetaBuilder.js';
|
|
5
|
-
export class ModelMetaBuilder {
|
|
6
|
-
clazz;
|
|
7
|
-
constructor(clazz) {
|
|
8
|
-
this.clazz = clazz;
|
|
9
|
-
}
|
|
10
|
-
build() {
|
|
11
|
-
const dataSource = ModelInfoUtil.getDataSource(this.clazz);
|
|
12
|
-
const tableName = ModelInfoUtil.getTableName(this.clazz) || NameUtil.getTableName(this.clazz.name);
|
|
13
|
-
const attributeMetaBuilder = new AttributeMetaBuilder(this.clazz);
|
|
14
|
-
const attributes = attributeMetaBuilder.build();
|
|
15
|
-
const indexMetaBuilder = new IndexMetaBuilder(this.clazz, attributes);
|
|
16
|
-
const indices = indexMetaBuilder.build();
|
|
17
|
-
return new ModelMetadata(dataSource, tableName, attributes, indices);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNZXRhQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZGVsTWV0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLEtBQUssQ0FBb0I7SUFFMUMsWUFBWSxLQUF3QjtRQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRyxNQUFNLG9CQUFvQixHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGIn0=
|
package/src/builder/index.d.ts
DELETED
package/src/builder/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './AttributeMetaBuilder.js';
|
|
2
|
-
export * from './IndexMetaBuilder.js';
|
|
3
|
-
export * from './ModelMetaBuilder.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQyJ9
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert';
|
|
2
|
-
import { ModelInfoUtil } from '../util/index.js';
|
|
3
|
-
export function Attribute(dataType, options) {
|
|
4
|
-
return function (target, propertyKey) {
|
|
5
|
-
const clazz = target.constructor;
|
|
6
|
-
assert(typeof propertyKey === 'string', `[model/${clazz.name}] expect method name be typeof string, but now is ${String(propertyKey)}`);
|
|
7
|
-
ModelInfoUtil.addModelAttribute(dataType, options, clazz, propertyKey);
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQXR0cmlidXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxRQUFnQixFQUFFLE9BQTBCO0lBQ3BFLE9BQU8sVUFBUyxNQUFXLEVBQUUsV0FBd0I7UUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQWdDLENBQUM7UUFDdEQsTUFBTSxDQUFDLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFDcEMsVUFBVSxLQUFLLENBQUMsSUFBSSxxREFBcUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRyxhQUFhLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ModelInfoUtil } from '../util/index.js';
|
|
2
|
-
export function DataSource(dataSource) {
|
|
3
|
-
return function (clazz) {
|
|
4
|
-
ModelInfoUtil.setDataSource(dataSource, clazz);
|
|
5
|
-
};
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkRhdGFTb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE1BQU0sVUFBVSxVQUFVLENBQUMsVUFBa0I7SUFDM0MsT0FBTyxVQUFTLEtBQXdCO1FBQ3RDLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
package/src/decorator/Model.d.ts
DELETED
package/src/decorator/Model.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { SingletonProto } from '@eggjs/core-decorator';
|
|
2
|
-
import { AccessLevel, MODEL_PROTO_IMPL_TYPE } from '@eggjs/tegg-types';
|
|
3
|
-
import { ModelInfoUtil } from '../util/index.js';
|
|
4
|
-
export function Model(param) {
|
|
5
|
-
return function (clazz) {
|
|
6
|
-
ModelInfoUtil.setIsModel(true, clazz);
|
|
7
|
-
const func = SingletonProto({
|
|
8
|
-
name: clazz.name,
|
|
9
|
-
accessLevel: AccessLevel.PUBLIC,
|
|
10
|
-
protoImplType: MODEL_PROTO_IMPL_TYPE,
|
|
11
|
-
});
|
|
12
|
-
if (param?.tableName) {
|
|
13
|
-
ModelInfoUtil.setTableName(param.tableName, clazz);
|
|
14
|
-
}
|
|
15
|
-
if (param?.dataSource) {
|
|
16
|
-
ModelInfoUtil.setDataSource(param.dataSource, clazz);
|
|
17
|
-
}
|
|
18
|
-
func(clazz);
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLFVBQVUsS0FBSyxDQUFDLEtBQW1CO0lBQ3ZDLE9BQU8sVUFBUyxLQUF3QjtRQUN0QyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLElBQUksR0FBRyxjQUFjLENBQUM7WUFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxXQUFXLENBQUMsTUFBTTtZQUMvQixhQUFhLEVBQUUscUJBQXFCO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ModelInfoUtil } from '../util/index.js';
|
|
2
|
-
export function Index(fields, params) {
|
|
3
|
-
return function (clazz) {
|
|
4
|
-
ModelInfoUtil.addModelIndex(fields, params, clazz);
|
|
5
|
-
};
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxJbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZGVsSW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE1BQU0sVUFBVSxLQUFLLENBQUMsTUFBZ0IsRUFBRSxNQUFxQjtJQUMzRCxPQUFPLFVBQVMsS0FBd0I7UUFDdEMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
package/src/decorator/index.d.ts
DELETED
package/src/decorator/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './Attribute.js';
|
|
2
|
-
export * from './DataSource.js';
|
|
3
|
-
export * from './Model.js';
|
|
4
|
-
export * from './ModelIndex.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxpQkFBaUIsQ0FBQyJ9
|
package/src/index.d.ts
DELETED
package/src/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from '@eggjs/tegg-types/orm';
|
|
2
|
-
export * from './builder/index.js';
|
|
3
|
-
export * from './decorator/index.js';
|
|
4
|
-
export * from './model/index.js';
|
|
5
|
-
export * from './util/index.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUMifQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare class AttributeMeta {
|
|
2
|
-
readonly dataType: string;
|
|
3
|
-
readonly propertyName: string;
|
|
4
|
-
readonly attributeName: string;
|
|
5
|
-
readonly allowNull: boolean;
|
|
6
|
-
readonly autoIncrement: boolean;
|
|
7
|
-
readonly primary: boolean;
|
|
8
|
-
readonly unique: boolean;
|
|
9
|
-
constructor(dataType: string, propertyName: string, attributeName: string, allowNull: boolean, autoIncrement: boolean, primary: boolean, unique: boolean);
|
|
10
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class AttributeMeta {
|
|
2
|
-
dataType;
|
|
3
|
-
propertyName;
|
|
4
|
-
attributeName;
|
|
5
|
-
allowNull;
|
|
6
|
-
autoIncrement;
|
|
7
|
-
primary;
|
|
8
|
-
unique;
|
|
9
|
-
constructor(dataType, propertyName, attributeName, allowNull, autoIncrement, primary, unique) {
|
|
10
|
-
this.dataType = dataType;
|
|
11
|
-
this.propertyName = propertyName;
|
|
12
|
-
this.attributeName = attributeName;
|
|
13
|
-
this.allowNull = allowNull;
|
|
14
|
-
this.autoIncrement = autoIncrement;
|
|
15
|
-
this.primary = primary;
|
|
16
|
-
this.unique = unique;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlTWV0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkF0dHJpYnV0ZU1ldGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFDZixRQUFRLENBQVM7SUFDakIsWUFBWSxDQUFTO0lBQ3JCLGFBQWEsQ0FBUztJQUN0QixTQUFTLENBQVU7SUFDbkIsYUFBYSxDQUFVO0lBQ3ZCLE9BQU8sQ0FBVTtJQUNqQixNQUFNLENBQVU7SUFFekIsWUFDRSxRQUFnQixFQUNoQixZQUFvQixFQUNwQixhQUFxQixFQUNyQixTQUFrQixFQUNsQixhQUFzQixFQUN0QixPQUFnQixFQUNoQixNQUFlO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztDQUNGIn0=
|
package/src/model/IndexMeta.d.ts
DELETED
package/src/model/IndexMeta.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export class IndexMeta {
|
|
2
|
-
name;
|
|
3
|
-
fields;
|
|
4
|
-
unique;
|
|
5
|
-
primary;
|
|
6
|
-
constructor(name, fields, unique, primary) {
|
|
7
|
-
this.name = name;
|
|
8
|
-
this.fields = fields;
|
|
9
|
-
this.unique = unique;
|
|
10
|
-
this.primary = primary;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5kZXhNZXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiSW5kZXhNZXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO0lBQ1gsSUFBSSxDQUFTO0lBQ2IsTUFBTSxDQUFXO0lBQ2pCLE1BQU0sQ0FBVTtJQUNoQixPQUFPLENBQVU7SUFFMUIsWUFDRSxJQUFZLEVBQ1osTUFBZ0IsRUFDaEIsTUFBZSxFQUNmLE9BQWdCO1FBRWhCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7Q0FDRiJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { AttributeMeta } from './AttributeMeta.js';
|
|
2
|
-
import { IndexMeta } from './IndexMeta.js';
|
|
3
|
-
export declare class ModelMetadata {
|
|
4
|
-
readonly dataSource: string | undefined;
|
|
5
|
-
readonly tableName: string;
|
|
6
|
-
readonly attributes: Array<AttributeMeta>;
|
|
7
|
-
readonly indices: Array<IndexMeta>;
|
|
8
|
-
constructor(dataSource: string | undefined, tableName: string, attributes: Array<AttributeMeta>, indices: Array<IndexMeta>);
|
|
9
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export class ModelMetadata {
|
|
2
|
-
dataSource;
|
|
3
|
-
tableName;
|
|
4
|
-
attributes;
|
|
5
|
-
indices;
|
|
6
|
-
constructor(dataSource, tableName, attributes, indices) {
|
|
7
|
-
this.dataSource = dataSource;
|
|
8
|
-
this.tableName = tableName;
|
|
9
|
-
this.attributes = attributes;
|
|
10
|
-
this.indices = indices;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZGVsTWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGFBQWE7SUFDZixVQUFVLENBQXFCO0lBQy9CLFNBQVMsQ0FBUztJQUNsQixVQUFVLENBQXVCO0lBQ2pDLE9BQU8sQ0FBbUI7SUFFbkMsWUFBWSxVQUE4QixFQUFFLFNBQWlCLEVBQUUsVUFBZ0MsRUFBRSxPQUF5QjtRQUN4SCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0YifQ==
|
package/src/model/index.d.ts
DELETED
package/src/model/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './AttributeMeta.js';
|
|
2
|
-
export * from './IndexMeta.js';
|
|
3
|
-
export * from './ModelMetadata.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxvQkFBb0IsQ0FBQyJ9
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { AttributeOptions, EggProtoImplClass, IndexOptions, ModelAttributeInfo, ModelIndexInfo } from '@eggjs/tegg-types';
|
|
2
|
-
type ModelAttributeMap = Map<string, ModelAttributeInfo>;
|
|
3
|
-
export declare class ModelInfoUtil {
|
|
4
|
-
static setIsModel(isModel: boolean, clazz: EggProtoImplClass): void;
|
|
5
|
-
static getIsModel(clazz: EggProtoImplClass): boolean;
|
|
6
|
-
static setDataSource(dataSource: string, clazz: EggProtoImplClass): void;
|
|
7
|
-
static getDataSource(clazz: EggProtoImplClass): string | undefined;
|
|
8
|
-
static setTableName(tableName: string, clazz: EggProtoImplClass): void;
|
|
9
|
-
static getTableName(clazz: EggProtoImplClass): string | undefined;
|
|
10
|
-
static addModelIndex(fields: string[], options: IndexOptions | undefined, clazz: EggProtoImplClass): void;
|
|
11
|
-
static getModelIndices(clazz: EggProtoImplClass): Array<ModelIndexInfo>;
|
|
12
|
-
static addModelAttribute(dataType: string, options: AttributeOptions | undefined, clazz: EggProtoImplClass, property: string): void;
|
|
13
|
-
static getModelAttributes(clazz: EggProtoImplClass): ModelAttributeMap | undefined;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
-
import { IS_MODEL, MODEL_DATA_ATTRIBUTES, MODEL_DATA_INDICES, MODEL_DATA_SOURCE, MODEL_DATA_TABLE_NAME, } from '@eggjs/tegg-types';
|
|
3
|
-
export class ModelInfoUtil {
|
|
4
|
-
static setIsModel(isModel, clazz) {
|
|
5
|
-
MetadataUtil.defineMetaData(IS_MODEL, isModel, clazz);
|
|
6
|
-
}
|
|
7
|
-
static getIsModel(clazz) {
|
|
8
|
-
return MetadataUtil.getBooleanMetaData(IS_MODEL, clazz);
|
|
9
|
-
}
|
|
10
|
-
static setDataSource(dataSource, clazz) {
|
|
11
|
-
MetadataUtil.defineMetaData(MODEL_DATA_SOURCE, dataSource, clazz);
|
|
12
|
-
}
|
|
13
|
-
static getDataSource(clazz) {
|
|
14
|
-
return MetadataUtil.getMetaData(MODEL_DATA_SOURCE, clazz);
|
|
15
|
-
}
|
|
16
|
-
static setTableName(tableName, clazz) {
|
|
17
|
-
MetadataUtil.defineMetaData(MODEL_DATA_TABLE_NAME, tableName, clazz);
|
|
18
|
-
}
|
|
19
|
-
static getTableName(clazz) {
|
|
20
|
-
return MetadataUtil.getMetaData(MODEL_DATA_TABLE_NAME, clazz);
|
|
21
|
-
}
|
|
22
|
-
static addModelIndex(fields, options, clazz) {
|
|
23
|
-
const indexInfo = MetadataUtil.initOwnArrayMetaData(MODEL_DATA_INDICES, clazz, []);
|
|
24
|
-
indexInfo.push({
|
|
25
|
-
fields,
|
|
26
|
-
options,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
static getModelIndices(clazz) {
|
|
30
|
-
return MetadataUtil.getArrayMetaData(MODEL_DATA_INDICES, clazz);
|
|
31
|
-
}
|
|
32
|
-
static addModelAttribute(dataType, options, clazz, property) {
|
|
33
|
-
const attributeMap = MetadataUtil.initOwnMapMetaData(MODEL_DATA_ATTRIBUTES, clazz, new Map());
|
|
34
|
-
attributeMap.set(property, {
|
|
35
|
-
dataType,
|
|
36
|
-
options,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
static getModelAttributes(clazz) {
|
|
40
|
-
return MetadataUtil.getMetaData(MODEL_DATA_ATTRIBUTES, clazz);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxJbmZvVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZGVsSW5mb1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUXJELE9BQU8sRUFDTCxRQUFRLEVBQ1IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFJM0IsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFnQixFQUFFLEtBQXdCO1FBQzFELFlBQVksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUF3QjtRQUN4QyxPQUFPLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBa0IsRUFBRSxLQUF3QjtRQUMvRCxZQUFZLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUF3QjtRQUMzQyxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBaUIsRUFBRSxLQUF3QjtRQUM3RCxZQUFZLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUF3QjtRQUMxQyxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBZ0IsRUFBRSxPQUFpQyxFQUFFLEtBQXdCO1FBQ2hHLE1BQU0sU0FBUyxHQUEwQixZQUFZLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDYixNQUFNO1lBQ04sT0FBTztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQXdCO1FBQzdDLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBZ0IsRUFBRSxPQUFxQyxFQUFFLEtBQXdCLEVBQUUsUUFBZ0I7UUFDMUgsTUFBTSxZQUFZLEdBQXNCLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2pILFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ3pCLFFBQVE7WUFDUixPQUFPO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUF3QjtRQUNoRCxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGIn0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { EggProtoImplClass } from '@eggjs/tegg-types';
|
|
2
|
-
import { ModelMetadata } from '../model/index.js';
|
|
3
|
-
export declare const MODEL_METADATA: unique symbol;
|
|
4
|
-
export declare class ModelMetadataUtil {
|
|
5
|
-
static setModelMetadata(clazz: EggProtoImplClass, metaData: ModelMetadata): void;
|
|
6
|
-
static getModelMetadata(clazz: EggProtoImplClass): ModelMetadata | undefined;
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { MetadataUtil } from '@eggjs/core-decorator';
|
|
2
|
-
export const MODEL_METADATA = Symbol.for('EggPrototype#model#metadata');
|
|
3
|
-
export class ModelMetadataUtil {
|
|
4
|
-
static setModelMetadata(clazz, metaData) {
|
|
5
|
-
MetadataUtil.defineMetaData(MODEL_METADATA, metaData, clazz);
|
|
6
|
-
}
|
|
7
|
-
static getModelMetadata(clazz) {
|
|
8
|
-
return MetadataUtil.getMetaData(MODEL_METADATA, clazz);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNZXRhZGF0YVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJNb2RlbE1ldGFkYXRhVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJckQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUV4RSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUF3QixFQUFFLFFBQXVCO1FBQ3ZFLFlBQVksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQXdCO1FBQzlDLE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGIn0=
|
package/src/util/NameUtil.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare class NameUtil {
|
|
2
|
-
/**
|
|
3
|
-
* get table name
|
|
4
|
-
* StudentScore -> student_scores
|
|
5
|
-
*/
|
|
6
|
-
static getTableName(modelName: string): string;
|
|
7
|
-
/**
|
|
8
|
-
* get attribute name
|
|
9
|
-
* userName -> user_name
|
|
10
|
-
*/
|
|
11
|
-
static getAttributeName(propertyName: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* [ 'user_name' ], unique
|
|
14
|
-
* uk_user_name
|
|
15
|
-
*
|
|
16
|
-
* [ 'user_name', 'gender' ]
|
|
17
|
-
* idx_user_name_gender
|
|
18
|
-
*/
|
|
19
|
-
static getIndexName(fields: string[], options?: {
|
|
20
|
-
unique?: boolean;
|
|
21
|
-
}): string;
|
|
22
|
-
}
|
package/src/util/NameUtil.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash';
|
|
2
|
-
import pluralize from 'pluralize';
|
|
3
|
-
export class NameUtil {
|
|
4
|
-
/**
|
|
5
|
-
* get table name
|
|
6
|
-
* StudentScore -> student_scores
|
|
7
|
-
*/
|
|
8
|
-
static getTableName(modelName) {
|
|
9
|
-
const modelNames = pluralize(modelName);
|
|
10
|
-
return _.snakeCase(modelNames);
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* get attribute name
|
|
14
|
-
* userName -> user_name
|
|
15
|
-
*/
|
|
16
|
-
static getAttributeName(propertyName) {
|
|
17
|
-
return _.snakeCase(propertyName);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* [ 'user_name' ], unique
|
|
21
|
-
* uk_user_name
|
|
22
|
-
*
|
|
23
|
-
* [ 'user_name', 'gender' ]
|
|
24
|
-
* idx_user_name_gender
|
|
25
|
-
*/
|
|
26
|
-
static getIndexName(fields, options) {
|
|
27
|
-
const prefix = options?.unique ? 'uk_' : 'idx_';
|
|
28
|
-
const names = fields.join('_');
|
|
29
|
-
return prefix + names;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJOYW1lVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE1BQU0sT0FBTyxRQUFRO0lBQ25COzs7T0FHRztJQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBaUI7UUFDbkMsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFlBQW9CO1FBQzFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFnQixFQUFFLE9BQThCO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiJ9
|
package/src/util/index.d.ts
DELETED
package/src/util/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './ModelInfoUtil.js';
|
|
2
|
-
export * from './ModelMetadataUtil.js';
|
|
3
|
-
export * from './NameUtil.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxlQUFlLENBQUMifQ==
|