@rws-framework/db 2.4.6 → 3.0.1
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/.bin/add-v.sh +9 -9
- package/.bin/emerge.sh +10 -10
- package/.eslintrc.json +53 -53
- package/README.md +343 -405
- package/dist/decorators/IdType.d.ts +8 -0
- package/dist/decorators/IdType.js +10 -0
- package/dist/decorators/InverseRelation.d.ts +2 -2
- package/dist/decorators/InverseRelation.js +5 -1
- package/dist/decorators/InverseTimeSeries.d.ts +0 -0
- package/dist/decorators/InverseTimeSeries.js +0 -0
- package/dist/decorators/RWSCollection.d.ts +7 -0
- package/dist/decorators/RWSCollection.js +6 -0
- package/dist/decorators/Relation.d.ts +8 -6
- package/dist/decorators/Relation.js +8 -1
- package/dist/decorators/TrackType.d.ts +2 -14
- package/dist/decorators/TrackType.js +7 -0
- package/dist/decorators/TypeFunctions.d.ts +44 -0
- package/dist/decorators/TypeFunctions.js +174 -0
- package/dist/decorators/index.d.ts +4 -2
- package/dist/decorators/index.js +3 -1
- package/dist/helper/DbHelper.d.ts +76 -5
- package/dist/helper/DbHelper.js +93 -154
- package/dist/helper/FieldsHelper.d.ts +0 -0
- package/dist/helper/FieldsHelper.js +0 -0
- package/dist/helper/db/index.d.ts +9 -0
- package/dist/helper/db/index.js +18 -0
- package/dist/helper/db/relation-manager.d.ts +45 -0
- package/dist/helper/db/relation-manager.js +105 -0
- package/dist/helper/db/schema-generator.d.ts +37 -0
- package/dist/helper/db/schema-generator.js +255 -0
- package/dist/helper/db/type-converter.d.ts +22 -0
- package/dist/helper/db/type-converter.js +106 -0
- package/dist/helper/db/utils.d.ts +24 -0
- package/dist/helper/db/utils.js +99 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -1
- package/dist/models/TimeSeriesModel.d.ts +7 -7
- package/dist/models/TimeSeriesModel.js +33 -33
- package/dist/models/_model.d.ts +2 -2
- package/dist/models/_model.js +0 -0
- package/dist/models/core/RWSModel.d.ts +5 -2
- package/dist/models/core/RWSModel.js +8 -5
- package/dist/models/core/TimeSeriesModel.d.ts +0 -0
- package/dist/models/core/TimeSeriesModel.js +0 -0
- package/dist/models/index.d.ts +2 -2
- package/dist/models/index.js +0 -0
- package/dist/models/interfaces/IDbOpts.d.ts +17 -0
- package/dist/models/interfaces/IDbOpts.js +2 -0
- package/dist/models/interfaces/IIdOpts.d.ts +0 -0
- package/dist/models/interfaces/IIdOpts.js +1 -0
- package/dist/models/interfaces/IIdTypeOpts.d.ts +3 -0
- package/dist/models/interfaces/IIdTypeOpts.js +2 -0
- package/dist/models/interfaces/IModel.d.ts +0 -0
- package/dist/models/interfaces/IModel.js +0 -0
- package/dist/models/interfaces/IRWSModelServices.d.ts +0 -0
- package/dist/models/interfaces/IRWSModelServices.js +0 -0
- package/dist/models/interfaces/ITrackerOpts.d.ts +12 -0
- package/dist/models/interfaces/ITrackerOpts.js +2 -0
- package/dist/models/interfaces/OpModelType.d.ts +4 -1
- package/dist/models/interfaces/OpModelType.js +0 -0
- package/dist/models/types/RelationTypes.d.ts +0 -0
- package/dist/models/types/RelationTypes.js +0 -0
- package/dist/models/utils/ModelUtils.d.ts +0 -0
- package/dist/models/utils/ModelUtils.js +0 -0
- package/dist/models/utils/PaginationUtils.d.ts +0 -0
- package/dist/models/utils/PaginationUtils.js +0 -0
- package/dist/models/utils/RelationUtils.d.ts +1 -1
- package/dist/models/utils/RelationUtils.js +2 -2
- package/dist/models/utils/TimeSeriesUtils.d.ts +0 -0
- package/dist/models/utils/TimeSeriesUtils.js +0 -0
- package/dist/services/DBService.d.ts +0 -0
- package/dist/services/DBService.js +0 -0
- package/dist/types/DbConfigHandler.d.ts +1 -1
- package/dist/types/DbConfigHandler.js +0 -0
- package/dist/types/FindParams.d.ts +0 -0
- package/dist/types/FindParams.js +0 -0
- package/dist/types/IRWSModel.d.ts +1 -1
- package/dist/types/IRWSModel.js +0 -0
- package/dist/types/ITimeSeries.d.ts +0 -0
- package/dist/types/ITimeSeries.js +0 -0
- package/exec/console.js +110 -110
- package/exec/db.rws.webpack.config.js +168 -168
- package/exec/src/cli.ts +73 -75
- package/exec/tsconfig.json +32 -32
- package/exec/webpackFilters.js +17 -17
- package/package.json +36 -36
- package/src/decorators/IdType.ts +17 -0
- package/src/decorators/InverseRelation.ts +41 -37
- package/src/decorators/InverseTimeSeries.ts +21 -21
- package/src/decorators/RWSCollection.ts +45 -27
- package/src/decorators/Relation.ts +61 -48
- package/src/decorators/TrackType.ts +65 -69
- package/src/decorators/index.ts +16 -8
- package/src/empty.js +0 -0
- package/src/helper/DbHelper.ts +133 -223
- package/src/helper/FieldsHelper.ts +34 -34
- package/src/helper/db/index.ts +10 -0
- package/src/helper/db/relation-manager.ts +119 -0
- package/src/helper/db/schema-generator.ts +318 -0
- package/src/helper/db/type-converter.ts +119 -0
- package/src/helper/db/utils.ts +120 -0
- package/src/index.ts +47 -38
- package/src/models/_model.ts +29 -29
- package/src/models/core/RWSModel.ts +529 -520
- package/src/models/core/TimeSeriesModel.ts +19 -19
- package/src/models/index.ts +20 -20
- package/src/models/interfaces/IDbOpts.ts +17 -0
- package/src/models/interfaces/IIdTypeOpts.ts +4 -0
- package/src/models/interfaces/IModel.ts +12 -12
- package/src/models/interfaces/IRWSModelServices.ts +7 -7
- package/src/models/interfaces/ITrackerOpts.ts +13 -0
- package/src/models/interfaces/OpModelType.ts +52 -49
- package/src/models/types/RelationTypes.ts +25 -25
- package/src/models/utils/ModelUtils.ts +65 -65
- package/src/models/utils/PaginationUtils.ts +42 -42
- package/src/models/utils/RelationUtils.ts +76 -76
- package/src/models/utils/TimeSeriesUtils.ts +38 -38
- package/src/services/DBService.ts +277 -277
- package/src/types/DbConfigHandler.ts +17 -17
- package/src/types/FindParams.ts +13 -13
- package/src/types/IRWSModel.ts +2 -2
- package/src/types/ITimeSeries.ts +5 -5
- package/tsconfig.json +22 -22
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import { RelOneMetaType, RelManyMetaType } from '../types/RelationTypes';
|
|
2
|
-
import { IRWSModel } from '../../types/IRWSModel';
|
|
3
|
-
import { RWSModel } from '../_model';
|
|
4
|
-
|
|
5
|
-
export class RelationUtils {
|
|
6
|
-
static async getRelationOneMeta(model: RWSModel<any>, classFields: string[]): Promise<RelOneMetaType<IRWSModel>> {
|
|
7
|
-
const relIds: RelOneMetaType<IRWSModel> = {};
|
|
8
|
-
const relationFields = classFields
|
|
9
|
-
.filter((item: string) => item.indexOf('Relation') === 0 && !item.includes('Inverse'))
|
|
10
|
-
.map((item: string) => item.split(':').at(-1));
|
|
11
|
-
|
|
12
|
-
for (const key of relationFields) {
|
|
13
|
-
const metadataKey = `Relation:${key}`;
|
|
14
|
-
const metadata = Reflect.getMetadata(metadataKey, model);
|
|
15
|
-
|
|
16
|
-
if (metadata && metadata.promise) {
|
|
17
|
-
const resolvedMetadata = await metadata.promise;
|
|
18
|
-
if (!relIds[key]) {
|
|
19
|
-
relIds[key] = {
|
|
20
|
-
key: resolvedMetadata.key,
|
|
21
|
-
required: resolvedMetadata.required,
|
|
22
|
-
model: resolvedMetadata.relatedTo,
|
|
23
|
-
hydrationField: resolvedMetadata.relationField,
|
|
24
|
-
foreignKey: resolvedMetadata.relatedToField
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return relIds;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
static async getRelationManyMeta(model: RWSModel<any>, classFields: string[]): Promise<RelManyMetaType<IRWSModel>> {
|
|
34
|
-
const relIds: RelManyMetaType<IRWSModel> = {};
|
|
35
|
-
|
|
36
|
-
const inverseFields = classFields
|
|
37
|
-
.filter((item: string) => item.indexOf('InverseRelation') === 0)
|
|
38
|
-
.map((item: string) => item.split(':').at(-1));
|
|
39
|
-
|
|
40
|
-
for (const key of inverseFields) {
|
|
41
|
-
const metadataKey = `InverseRelation:${key}`;
|
|
42
|
-
const metadata = Reflect.getMetadata(metadataKey, model);
|
|
43
|
-
|
|
44
|
-
if (metadata && metadata.promise) {
|
|
45
|
-
const resolvedMetadata = await metadata.promise;
|
|
46
|
-
if (!relIds[key]) {
|
|
47
|
-
relIds[key] = {
|
|
48
|
-
key: resolvedMetadata.key,
|
|
49
|
-
inversionModel: resolvedMetadata.inversionModel,
|
|
50
|
-
foreignKey: resolvedMetadata.foreignKey
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return relIds;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
static bindRelation(relatedModel: RWSModel<any>): { connect: { id: string | number } } {
|
|
60
|
-
return {
|
|
61
|
-
connect: {
|
|
62
|
-
id: relatedModel.id
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
static hasRelation(model: RWSModel<any>, key: string): boolean {
|
|
68
|
-
// Check if the property exists and is an object with an id property
|
|
69
|
-
return !!model[key] && typeof model[key] === 'object' && model[key] !== null && 'id' in model[key];
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
static
|
|
73
|
-
return Object.keys((model.constructor as any)._RELATIONS).includes(key) &&
|
|
74
|
-
(model.constructor as any)._RELATIONS[key] ===
|
|
75
|
-
}
|
|
76
|
-
}
|
|
1
|
+
import { RelOneMetaType, RelManyMetaType } from '../types/RelationTypes';
|
|
2
|
+
import { IRWSModel } from '../../types/IRWSModel';
|
|
3
|
+
import { RWSModel } from '../_model';
|
|
4
|
+
|
|
5
|
+
export class RelationUtils {
|
|
6
|
+
static async getRelationOneMeta(model: RWSModel<any>, classFields: string[]): Promise<RelOneMetaType<IRWSModel>> {
|
|
7
|
+
const relIds: RelOneMetaType<IRWSModel> = {};
|
|
8
|
+
const relationFields = classFields
|
|
9
|
+
.filter((item: string) => item.indexOf('Relation') === 0 && !item.includes('Inverse'))
|
|
10
|
+
.map((item: string) => item.split(':').at(-1));
|
|
11
|
+
|
|
12
|
+
for (const key of relationFields) {
|
|
13
|
+
const metadataKey = `Relation:${key}`;
|
|
14
|
+
const metadata = Reflect.getMetadata(metadataKey, model);
|
|
15
|
+
|
|
16
|
+
if (metadata && metadata.promise) {
|
|
17
|
+
const resolvedMetadata = await metadata.promise;
|
|
18
|
+
if (!relIds[key]) {
|
|
19
|
+
relIds[key] = {
|
|
20
|
+
key: resolvedMetadata.key,
|
|
21
|
+
required: resolvedMetadata.required,
|
|
22
|
+
model: resolvedMetadata.relatedTo,
|
|
23
|
+
hydrationField: resolvedMetadata.relationField,
|
|
24
|
+
foreignKey: resolvedMetadata.relatedToField
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return relIds;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static async getRelationManyMeta(model: RWSModel<any>, classFields: string[]): Promise<RelManyMetaType<IRWSModel>> {
|
|
34
|
+
const relIds: RelManyMetaType<IRWSModel> = {};
|
|
35
|
+
|
|
36
|
+
const inverseFields = classFields
|
|
37
|
+
.filter((item: string) => item.indexOf('InverseRelation') === 0)
|
|
38
|
+
.map((item: string) => item.split(':').at(-1));
|
|
39
|
+
|
|
40
|
+
for (const key of inverseFields) {
|
|
41
|
+
const metadataKey = `InverseRelation:${key}`;
|
|
42
|
+
const metadata = Reflect.getMetadata(metadataKey, model);
|
|
43
|
+
|
|
44
|
+
if (metadata && metadata.promise) {
|
|
45
|
+
const resolvedMetadata = await metadata.promise;
|
|
46
|
+
if (!relIds[key]) {
|
|
47
|
+
relIds[key] = {
|
|
48
|
+
key: resolvedMetadata.key,
|
|
49
|
+
inversionModel: resolvedMetadata.inversionModel,
|
|
50
|
+
foreignKey: resolvedMetadata.foreignKey
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return relIds;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static bindRelation(relatedModel: RWSModel<any>): { connect: { id: string | number } } {
|
|
60
|
+
return {
|
|
61
|
+
connect: {
|
|
62
|
+
id: relatedModel.id
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static hasRelation(model: RWSModel<any>, key: string): boolean {
|
|
68
|
+
// Check if the property exists and is an object with an id property
|
|
69
|
+
return !!model[key] && typeof model[key] === 'object' && model[key] !== null && 'id' in model[key];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static checkRelDisabled(model: RWSModel<any>, key: string): boolean {
|
|
73
|
+
return Object.keys((model.constructor as any)._RELATIONS).includes(key) &&
|
|
74
|
+
(model.constructor as any)._RELATIONS[key] === false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { RWSModel } from "../_model";
|
|
2
|
-
|
|
3
|
-
export class TimeSeriesUtils {
|
|
4
|
-
static getTimeSeriesModelFields(model: RWSModel<any>): {[key: string]: {collection: string, hydrationField: string, ids: string[]}} {
|
|
5
|
-
const timeSeriesIds: {[key: string]: {collection: string, hydrationField: string, ids: string[]}} = {};
|
|
6
|
-
|
|
7
|
-
for (const key in model) {
|
|
8
|
-
if (model.hasOwnProperty(key)) {
|
|
9
|
-
const meta = Reflect.getMetadata(`InverseTimeSeries:${key}`, model);
|
|
10
|
-
if(meta){
|
|
11
|
-
if(!timeSeriesIds[key]){
|
|
12
|
-
timeSeriesIds[key] = {
|
|
13
|
-
collection: meta.timeSeriesModel,
|
|
14
|
-
hydrationField: meta.hydrationField,
|
|
15
|
-
ids: model[key]
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return timeSeriesIds;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
static checkTimeSeries(constructor: any): boolean {
|
|
26
|
-
const data = constructor.prototype as any;
|
|
27
|
-
|
|
28
|
-
for (const key in data) {
|
|
29
|
-
if (data.hasOwnProperty(key)) {
|
|
30
|
-
if(Reflect.getMetadata(`InverseTimeSeries:${key}`, constructor.prototype)){
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
1
|
+
import { RWSModel } from "../_model";
|
|
2
|
+
|
|
3
|
+
export class TimeSeriesUtils {
|
|
4
|
+
static getTimeSeriesModelFields(model: RWSModel<any>): {[key: string]: {collection: string, hydrationField: string, ids: string[]}} {
|
|
5
|
+
const timeSeriesIds: {[key: string]: {collection: string, hydrationField: string, ids: string[]}} = {};
|
|
6
|
+
|
|
7
|
+
for (const key in model) {
|
|
8
|
+
if (model.hasOwnProperty(key)) {
|
|
9
|
+
const meta = Reflect.getMetadata(`InverseTimeSeries:${key}`, model);
|
|
10
|
+
if(meta){
|
|
11
|
+
if(!timeSeriesIds[key]){
|
|
12
|
+
timeSeriesIds[key] = {
|
|
13
|
+
collection: meta.timeSeriesModel,
|
|
14
|
+
hydrationField: meta.hydrationField,
|
|
15
|
+
ids: model[key]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return timeSeriesIds;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static checkTimeSeries(constructor: any): boolean {
|
|
26
|
+
const data = constructor.prototype as any;
|
|
27
|
+
|
|
28
|
+
for (const key in data) {
|
|
29
|
+
if (data.hasOwnProperty(key)) {
|
|
30
|
+
if(Reflect.getMetadata(`InverseTimeSeries:${key}`, constructor.prototype)){
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|