@e22m4u/js-repository 0.6.5 → 0.8.0
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/.mocharc.json +2 -3
- package/README.md +128 -695
- package/dist/cjs/index.cjs +141 -1262
- package/eslint.config.js +29 -58
- package/jsconfig.json +7 -0
- package/package.json +12 -20
- package/src/adapter/adapter-loader.js +3 -4
- package/src/adapter/adapter.js +10 -11
- package/src/adapter/adapter.spec.js +13 -24
- package/src/adapter/builtin/memory-adapter.js +49 -19
- package/src/adapter/builtin/memory-adapter.spec.js +52 -2
- package/src/adapter/decorator/default-values-decorator.spec.js +1 -2
- package/src/adapter/decorator/index.js +0 -2
- package/src/database-schema.js +1 -2
- package/src/{database-schema.spec.ts → database-schema.spec.js} +5 -17
- package/src/definition/model/index.js +0 -3
- package/src/definition/model/model-definition-utils.js +1 -2
- package/src/definition/model/model-definition-utils.spec.js +5 -2
- package/src/definition/model/properties/index.js +0 -3
- package/src/definition/model/properties/properties-definition-validator.js +0 -169
- package/src/definition/model/properties/properties-definition-validator.spec.js +0 -162
- package/src/definition/model/relations/index.js +0 -1
- package/src/definition/model/relations/relations-definition-validator.js +4 -5
- package/src/filter/include-clause-tool.js +8 -6
- package/src/index.js +0 -1
- package/src/relations/belongs-to-resolver.js +1 -2
- package/src/relations/belongs-to-resolver.spec.js +6 -3
- package/src/relations/has-many-resolver.js +1 -2
- package/src/relations/has-many-resolver.spec.js +6 -3
- package/src/relations/has-one-resolver.js +1 -2
- package/src/relations/has-one-resolver.spec.js +6 -3
- package/src/relations/references-many-resolver.js +1 -2
- package/src/relations/references-many-resolver.spec.js +6 -3
- package/src/repository/repository.js +1 -2
- package/src/utils/index.js +0 -4
- package/src/utils/is-plain-object.js +4 -4
- package/src/utils/model-name-to-model-key.js +0 -4
- package/src/utils/model-name-to-model-key.spec.js +0 -23
- package/src/adapter/adapter-loader.d.ts +0 -16
- package/src/adapter/adapter-registry.d.ts +0 -14
- package/src/adapter/adapter.d.ts +0 -155
- package/src/adapter/builtin/memory-adapter.d.ts +0 -148
- package/src/adapter/decorator/data-sanitizing-decorator.d.ts +0 -14
- package/src/adapter/decorator/data-transformation-decorator.d.ts +0 -14
- package/src/adapter/decorator/data-transformation-decorator.js +0 -54
- package/src/adapter/decorator/data-transformation-decorator.spec.js +0 -193
- package/src/adapter/decorator/data-validation-decorator.d.ts +0 -14
- package/src/adapter/decorator/data-validation-decorator.js +0 -54
- package/src/adapter/decorator/data-validation-decorator.spec.js +0 -105
- package/src/adapter/decorator/default-values-decorator.d.ts +0 -14
- package/src/adapter/decorator/fields-filtering-decorator.d.ts +0 -14
- package/src/adapter/decorator/inclusion-decorator.d.ts +0 -14
- package/src/adapter/decorator/index.d.ts +0 -7
- package/src/adapter/decorator/property-uniqueness-decorator.d.ts +0 -14
- package/src/adapter/index.d.ts +0 -3
- package/src/database-schema.d.ts +0 -37
- package/src/definition/datasource/datasource-definition-validator.d.ts +0 -14
- package/src/definition/datasource/datasource-definition.d.ts +0 -8
- package/src/definition/datasource/index.d.ts +0 -2
- package/src/definition/definition-registry.d.ts +0 -50
- package/src/definition/index.d.ts +0 -3
- package/src/definition/model/index.d.ts +0 -8
- package/src/definition/model/model-data-sanitizer.d.ts +0 -15
- package/src/definition/model/model-data-transformer.d.ts +0 -16
- package/src/definition/model/model-data-transformer.js +0 -170
- package/src/definition/model/model-data-transformer.spec.js +0 -2312
- package/src/definition/model/model-data-validator.d.ts +0 -16
- package/src/definition/model/model-data-validator.js +0 -318
- package/src/definition/model/model-data-validator.spec.js +0 -4528
- package/src/definition/model/model-definition-utils.d.ts +0 -180
- package/src/definition/model/model-definition-validator.d.ts +0 -14
- package/src/definition/model/model-definition.d.ts +0 -28
- package/src/definition/model/model-definition.js +0 -1
- package/src/definition/model/properties/data-type.d.ts +0 -16
- package/src/definition/model/properties/index.d.ts +0 -8
- package/src/definition/model/properties/primary-keys-definition-validator.d.ts +0 -15
- package/src/definition/model/properties/properties-definition-validator.d.ts +0 -15
- package/src/definition/model/properties/property-definition.d.ts +0 -27
- package/src/definition/model/properties/property-definition.js +0 -1
- package/src/definition/model/properties/property-transformer/builtin/index.d.ts +0 -3
- package/src/definition/model/properties/property-transformer/builtin/index.js +0 -3
- package/src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.d.ts +0 -6
- package/src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.js +0 -19
- package/src/definition/model/properties/property-transformer/builtin/to-lower-case-transformer.spec.js +0 -39
- package/src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.d.ts +0 -6
- package/src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.js +0 -19
- package/src/definition/model/properties/property-transformer/builtin/to-upper-case-transformer.spec.js +0 -39
- package/src/definition/model/properties/property-transformer/builtin/trim-transformer.d.ts +0 -6
- package/src/definition/model/properties/property-transformer/builtin/trim-transformer.js +0 -19
- package/src/definition/model/properties/property-transformer/builtin/trim-transformer.spec.js +0 -39
- package/src/definition/model/properties/property-transformer/index.d.ts +0 -2
- package/src/definition/model/properties/property-transformer/index.js +0 -2
- package/src/definition/model/properties/property-transformer/property-transformer-registry.d.ts +0 -29
- package/src/definition/model/properties/property-transformer/property-transformer-registry.js +0 -76
- package/src/definition/model/properties/property-transformer/property-transformer-registry.spec.js +0 -133
- package/src/definition/model/properties/property-transformer/property-transformer.d.ts +0 -27
- package/src/definition/model/properties/property-transformer/property-transformer.js +0 -1
- package/src/definition/model/properties/property-uniqueness-validator.d.ts +0 -31
- package/src/definition/model/properties/property-uniqueness.d.ts +0 -14
- package/src/definition/model/properties/property-validator/builtin/index.d.ts +0 -3
- package/src/definition/model/properties/property-validator/builtin/index.js +0 -3
- package/src/definition/model/properties/property-validator/builtin/max-length-validator.d.ts +0 -6
- package/src/definition/model/properties/property-validator/builtin/max-length-validator.js +0 -28
- package/src/definition/model/properties/property-validator/builtin/max-length-validator.spec.js +0 -100
- package/src/definition/model/properties/property-validator/builtin/min-length-validator.d.ts +0 -6
- package/src/definition/model/properties/property-validator/builtin/min-length-validator.js +0 -28
- package/src/definition/model/properties/property-validator/builtin/min-length-validator.spec.js +0 -100
- package/src/definition/model/properties/property-validator/builtin/regexp-validator.d.ts +0 -6
- package/src/definition/model/properties/property-validator/builtin/regexp-validator.js +0 -30
- package/src/definition/model/properties/property-validator/builtin/regexp-validator.spec.js +0 -102
- package/src/definition/model/properties/property-validator/index.d.ts +0 -2
- package/src/definition/model/properties/property-validator/index.js +0 -2
- package/src/definition/model/properties/property-validator/property-validator-registry.d.ts +0 -29
- package/src/definition/model/properties/property-validator/property-validator-registry.js +0 -76
- package/src/definition/model/properties/property-validator/property-validator-registry.spec.js +0 -132
- package/src/definition/model/properties/property-validator/property-validator.d.ts +0 -25
- package/src/definition/model/properties/property-validator/property-validator.js +0 -1
- package/src/definition/model/relations/index.d.ts +0 -3
- package/src/definition/model/relations/relation-definition.d.ts +0 -236
- package/src/definition/model/relations/relation-definition.js +0 -1
- package/src/definition/model/relations/relation-type.d.ts +0 -14
- package/src/definition/model/relations/relations-definition-validator.d.ts +0 -15
- package/src/errors/index.d.ts +0 -3
- package/src/errors/invalid-argument-error.d.ts +0 -6
- package/src/errors/invalid-operator-value-error.d.ts +0 -13
- package/src/errors/not-implemented-error.d.ts +0 -6
- package/src/filter/fields-clause-tool.d.ts +0 -38
- package/src/filter/filter-clause.d.ts +0 -348
- package/src/filter/include-clause-tool.d.ts +0 -55
- package/src/filter/index.d.ts +0 -7
- package/src/filter/operator-clause-tool.d.ts +0 -224
- package/src/filter/order-clause-tool.d.ts +0 -32
- package/src/filter/slice-clause-tool.d.ts +0 -30
- package/src/filter/where-clause-tool.d.ts +0 -23
- package/src/index.d.ts +0 -9
- package/src/relations/belongs-to-resolver.d.ts +0 -46
- package/src/relations/has-many-resolver.d.ts +0 -67
- package/src/relations/has-one-resolver.d.ts +0 -67
- package/src/relations/index.d.ts +0 -4
- package/src/relations/references-many-resolver.d.ts +0 -27
- package/src/repository/index.d.ts +0 -2
- package/src/repository/repository-registry.d.ts +0 -29
- package/src/repository/repository.d.ts +0 -183
- package/src/types.d.ts +0 -43
- package/src/types.js +0 -1
- package/src/utils/capitalize.d.ts +0 -6
- package/src/utils/clone-deep.d.ts +0 -6
- package/src/utils/exclude-object-keys.d.ts +0 -10
- package/src/utils/get-ctor-name.d.ts +0 -6
- package/src/utils/get-ctor-name.js +0 -11
- package/src/utils/get-ctor-name.spec.js +0 -17
- package/src/utils/get-decorator-target-type.d.ts +0 -27
- package/src/utils/get-decorator-target-type.js +0 -63
- package/src/utils/get-decorator-target-type.spec.js +0 -80
- package/src/utils/get-value-by-path.d.ts +0 -12
- package/src/utils/index.d.ts +0 -16
- package/src/utils/is-ctor.d.ts +0 -8
- package/src/utils/is-ctor.js +0 -11
- package/src/utils/is-ctor.spec.js +0 -26
- package/src/utils/is-deep-equal.d.ts +0 -10
- package/src/utils/is-plain-object.d.ts +0 -6
- package/src/utils/is-promise.d.ts +0 -10
- package/src/utils/like-to-regexp.d.ts +0 -14
- package/src/utils/model-name-to-model-key.d.ts +0 -6
- package/src/utils/select-object-keys.d.ts +0 -10
- package/src/utils/singularize.d.ts +0 -6
- package/src/utils/string-to-regexp.d.ts +0 -10
- package/src/utils/transform-promise.d.ts +0 -13
- package/src/utils/transform-promise.js +0 -15
- package/src/utils/transform-promise.spec.js +0 -19
- package/tsconfig.json +0 -11
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {Adapter} from './adapter.js';
|
|
2
|
-
import {Service} from '@e22m4u/js-service';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Adapter registry.
|
|
6
|
-
*/
|
|
7
|
-
export declare class AdapterRegistry extends Service {
|
|
8
|
-
/**
|
|
9
|
-
* Get adapter.
|
|
10
|
-
*
|
|
11
|
-
* @param datasourceName
|
|
12
|
-
*/
|
|
13
|
-
getAdapter(datasourceName: string): Promise<Adapter>;
|
|
14
|
-
}
|
package/src/adapter/adapter.d.ts
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import {ModelId} from '../types.js';
|
|
2
|
-
import {AnyObject} from '../types.js';
|
|
3
|
-
import {ModelData} from '../types.js';
|
|
4
|
-
import {Service} from '@e22m4u/js-service';
|
|
5
|
-
import {WhereClause} from '../filter/index.js';
|
|
6
|
-
import {FilterClause} from '../filter/index.js';
|
|
7
|
-
import {ItemFilterClause} from '../filter/index.js';
|
|
8
|
-
import {ServiceContainer} from '@e22m4u/js-service';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Adapter.
|
|
12
|
-
*/
|
|
13
|
-
export declare class Adapter extends Service {
|
|
14
|
-
/**
|
|
15
|
-
* Kind.
|
|
16
|
-
*
|
|
17
|
-
* @type {string}
|
|
18
|
-
*/
|
|
19
|
-
static kind: string;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Settings.
|
|
23
|
-
*/
|
|
24
|
-
get settings(): AnyObject | undefined;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Constructor.
|
|
28
|
-
*
|
|
29
|
-
* @param container
|
|
30
|
-
* @param settings
|
|
31
|
-
*/
|
|
32
|
-
constructor(container?: ServiceContainer, settings?: AnyObject);
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Create.
|
|
36
|
-
*
|
|
37
|
-
* @param modelName
|
|
38
|
-
* @param modelData
|
|
39
|
-
* @param filter
|
|
40
|
-
*/
|
|
41
|
-
create(
|
|
42
|
-
modelName: string,
|
|
43
|
-
modelData: ModelData,
|
|
44
|
-
filter?: ItemFilterClause,
|
|
45
|
-
): Promise<ModelData>;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Replace by id.
|
|
49
|
-
*
|
|
50
|
-
* @param modelName
|
|
51
|
-
* @param id
|
|
52
|
-
* @param modelData
|
|
53
|
-
* @param filter
|
|
54
|
-
*/
|
|
55
|
-
replaceById(
|
|
56
|
-
modelName: string,
|
|
57
|
-
id: ModelId,
|
|
58
|
-
modelData: ModelData,
|
|
59
|
-
filter?: ItemFilterClause,
|
|
60
|
-
): Promise<ModelData>;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Replace or create.
|
|
64
|
-
*
|
|
65
|
-
* @param modelName
|
|
66
|
-
* @param modelData
|
|
67
|
-
* @param filter
|
|
68
|
-
*/
|
|
69
|
-
replaceOrCreate(
|
|
70
|
-
modelName: string,
|
|
71
|
-
modelData: ModelData,
|
|
72
|
-
filter?: ItemFilterClause,
|
|
73
|
-
): Promise<ModelData>;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Patch.
|
|
77
|
-
*
|
|
78
|
-
* @param modelName
|
|
79
|
-
* @param modelData
|
|
80
|
-
* @param where
|
|
81
|
-
*/
|
|
82
|
-
patch(
|
|
83
|
-
modelName: string,
|
|
84
|
-
modelData: ModelData,
|
|
85
|
-
where?: WhereClause,
|
|
86
|
-
): Promise<number>;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Patch by id.
|
|
90
|
-
*
|
|
91
|
-
* @param modelName
|
|
92
|
-
* @param id
|
|
93
|
-
* @param modelData
|
|
94
|
-
* @param filter
|
|
95
|
-
*/
|
|
96
|
-
patchById(
|
|
97
|
-
modelName: string,
|
|
98
|
-
id: ModelId,
|
|
99
|
-
modelData: ModelData,
|
|
100
|
-
filter?: ItemFilterClause,
|
|
101
|
-
): Promise<ModelData>;
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Find.
|
|
105
|
-
*
|
|
106
|
-
* @param modelName
|
|
107
|
-
* @param filter
|
|
108
|
-
*/
|
|
109
|
-
find(modelName: string, filter?: FilterClause): Promise<ModelData[]>;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Find by id.
|
|
113
|
-
*
|
|
114
|
-
* @param modelName
|
|
115
|
-
* @param id
|
|
116
|
-
* @param filter
|
|
117
|
-
*/
|
|
118
|
-
findById(
|
|
119
|
-
modelName: string,
|
|
120
|
-
id: ModelId,
|
|
121
|
-
filter?: ItemFilterClause,
|
|
122
|
-
): Promise<ModelData>;
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Delete.
|
|
126
|
-
*
|
|
127
|
-
* @param modelName
|
|
128
|
-
* @param where
|
|
129
|
-
*/
|
|
130
|
-
delete(modelName: string, where?: WhereClause): Promise<number>;
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Delete by id.
|
|
134
|
-
*
|
|
135
|
-
* @param modelName
|
|
136
|
-
* @param id
|
|
137
|
-
*/
|
|
138
|
-
deleteById(modelName: string, id: ModelId): Promise<boolean>;
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Exists.
|
|
142
|
-
*
|
|
143
|
-
* @param modelName
|
|
144
|
-
* @param id
|
|
145
|
-
*/
|
|
146
|
-
exists(modelName: string, id: ModelId): Promise<boolean>;
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Count.
|
|
150
|
-
*
|
|
151
|
-
* @param modelName
|
|
152
|
-
* @param where
|
|
153
|
-
*/
|
|
154
|
-
count(modelName: string, where?: WhereClause): Promise<number>;
|
|
155
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import {Adapter} from '../adapter.js';
|
|
2
|
-
import {ModelId} from '../../types.js';
|
|
3
|
-
import {AnyObject} from '../../types.js';
|
|
4
|
-
import {ModelData} from '../../types.js';
|
|
5
|
-
import {WhereClause} from '../../filter/index.js';
|
|
6
|
-
import {FilterClause} from '../../filter/index.js';
|
|
7
|
-
import {ServiceContainer} from '@e22m4u/js-service';
|
|
8
|
-
import {ItemFilterClause} from '../../filter/index.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Memory adapter.
|
|
12
|
-
*/
|
|
13
|
-
export declare class MemoryAdapter extends Adapter {
|
|
14
|
-
/**
|
|
15
|
-
* Settings.
|
|
16
|
-
*/
|
|
17
|
-
get settings(): AnyObject | undefined;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Constructor.
|
|
21
|
-
*
|
|
22
|
-
* @param container
|
|
23
|
-
* @param settings
|
|
24
|
-
*/
|
|
25
|
-
constructor(container?: ServiceContainer, settings?: AnyObject);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Create.
|
|
29
|
-
*
|
|
30
|
-
* @param modelName
|
|
31
|
-
* @param modelData
|
|
32
|
-
* @param filter
|
|
33
|
-
*/
|
|
34
|
-
create(
|
|
35
|
-
modelName: string,
|
|
36
|
-
modelData: ModelData,
|
|
37
|
-
filter?: ItemFilterClause,
|
|
38
|
-
): Promise<ModelData>;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Replace by id.
|
|
42
|
-
*
|
|
43
|
-
* @param modelName
|
|
44
|
-
* @param id
|
|
45
|
-
* @param modelData
|
|
46
|
-
* @param filter
|
|
47
|
-
*/
|
|
48
|
-
replaceById(
|
|
49
|
-
modelName: string,
|
|
50
|
-
id: ModelId,
|
|
51
|
-
modelData: ModelData,
|
|
52
|
-
filter?: ItemFilterClause,
|
|
53
|
-
): Promise<ModelData>;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Replace or create.
|
|
57
|
-
*
|
|
58
|
-
* @param modelName
|
|
59
|
-
* @param modelData
|
|
60
|
-
* @param filter
|
|
61
|
-
*/
|
|
62
|
-
replaceOrCreate(
|
|
63
|
-
modelName: string,
|
|
64
|
-
modelData: ModelData,
|
|
65
|
-
filter?: ItemFilterClause,
|
|
66
|
-
): Promise<ModelData>;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Patch.
|
|
70
|
-
*
|
|
71
|
-
* @param modelName
|
|
72
|
-
* @param modelData
|
|
73
|
-
* @param where
|
|
74
|
-
*/
|
|
75
|
-
patch(
|
|
76
|
-
modelName: string,
|
|
77
|
-
modelData: ModelData,
|
|
78
|
-
where?: WhereClause,
|
|
79
|
-
): Promise<number>;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Patch by id.
|
|
83
|
-
*
|
|
84
|
-
* @param modelName
|
|
85
|
-
* @param id
|
|
86
|
-
* @param modelData
|
|
87
|
-
* @param filter
|
|
88
|
-
*/
|
|
89
|
-
patchById(
|
|
90
|
-
modelName: string,
|
|
91
|
-
id: ModelId,
|
|
92
|
-
modelData: ModelData,
|
|
93
|
-
filter?: ItemFilterClause,
|
|
94
|
-
): Promise<ModelData>;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Find.
|
|
98
|
-
*
|
|
99
|
-
* @param modelName
|
|
100
|
-
* @param filter
|
|
101
|
-
*/
|
|
102
|
-
find(modelName: string, filter?: FilterClause): Promise<ModelData[]>;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Find by id.
|
|
106
|
-
*
|
|
107
|
-
* @param modelName
|
|
108
|
-
* @param id
|
|
109
|
-
* @param filter
|
|
110
|
-
*/
|
|
111
|
-
findById(
|
|
112
|
-
modelName: string,
|
|
113
|
-
id: ModelId,
|
|
114
|
-
filter?: ItemFilterClause,
|
|
115
|
-
): Promise<ModelData>;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Delete.
|
|
119
|
-
*
|
|
120
|
-
* @param modelName
|
|
121
|
-
* @param where
|
|
122
|
-
*/
|
|
123
|
-
delete(modelName: string, where?: WhereClause): Promise<number>;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Delete by id.
|
|
127
|
-
*
|
|
128
|
-
* @param modelName
|
|
129
|
-
* @param id
|
|
130
|
-
*/
|
|
131
|
-
deleteById(modelName: string, id: ModelId): Promise<boolean>;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Exists.
|
|
135
|
-
*
|
|
136
|
-
* @param modelName
|
|
137
|
-
* @param id
|
|
138
|
-
*/
|
|
139
|
-
exists(modelName: string, id: ModelId): Promise<boolean>;
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Count.
|
|
143
|
-
*
|
|
144
|
-
* @param modelName
|
|
145
|
-
* @param where
|
|
146
|
-
*/
|
|
147
|
-
count(modelName: string, where?: WhereClause): Promise<number>;
|
|
148
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {Adapter} from '../adapter.js';
|
|
2
|
-
import {Service} from '@e22m4u/js-service';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Data sanitizing decorator.
|
|
6
|
-
*/
|
|
7
|
-
export declare class DataSanitizingDecorator extends Service {
|
|
8
|
-
/**
|
|
9
|
-
* Decorate.
|
|
10
|
-
*
|
|
11
|
-
* @param adapter
|
|
12
|
-
*/
|
|
13
|
-
decorate(adapter: Adapter): void;
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {Adapter} from '../adapter.js';
|
|
2
|
-
import {Service} from '@e22m4u/js-service';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Data transformation decorator.
|
|
6
|
-
*/
|
|
7
|
-
export declare class DataTransformationDecorator extends Service {
|
|
8
|
-
/**
|
|
9
|
-
* Decorate.
|
|
10
|
-
*
|
|
11
|
-
* @param adapter
|
|
12
|
-
*/
|
|
13
|
-
decorate(adapter: Adapter): void;
|
|
14
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import {Adapter} from '../adapter.js';
|
|
2
|
-
import {Service} from '@e22m4u/js-service';
|
|
3
|
-
import {InvalidArgumentError} from '../../errors/index.js';
|
|
4
|
-
import {ModelDataTransformer} from '../../definition/index.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Data transformation decorator.
|
|
8
|
-
*/
|
|
9
|
-
export class DataTransformationDecorator extends Service {
|
|
10
|
-
/**
|
|
11
|
-
* Decorate.
|
|
12
|
-
*
|
|
13
|
-
* @param {Adapter} adapter
|
|
14
|
-
*/
|
|
15
|
-
decorate(adapter) {
|
|
16
|
-
if (!adapter || !(adapter instanceof Adapter))
|
|
17
|
-
throw new InvalidArgumentError(
|
|
18
|
-
'The first argument of DataTransformerDecorator.decorate should be ' +
|
|
19
|
-
'an Adapter instance, but %v was given.',
|
|
20
|
-
adapter,
|
|
21
|
-
);
|
|
22
|
-
const transformer = this.getService(ModelDataTransformer);
|
|
23
|
-
|
|
24
|
-
const create = adapter.create;
|
|
25
|
-
adapter.create = async function (modelName, modelData, filter) {
|
|
26
|
-
modelData = await transformer.transform(modelName, modelData);
|
|
27
|
-
return create.call(this, modelName, modelData, filter);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const replaceById = adapter.replaceById;
|
|
31
|
-
adapter.replaceById = async function (modelName, id, modelData, filter) {
|
|
32
|
-
modelData = await transformer.transform(modelName, modelData);
|
|
33
|
-
return replaceById.call(this, modelName, id, modelData, filter);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const replaceOrCreate = adapter.replaceOrCreate;
|
|
37
|
-
adapter.replaceOrCreate = async function (modelName, modelData, filter) {
|
|
38
|
-
modelData = await transformer.transform(modelName, modelData);
|
|
39
|
-
return replaceOrCreate.call(this, modelName, modelData, filter);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const patch = adapter.patch;
|
|
43
|
-
adapter.patch = async function (modelName, modelData, where) {
|
|
44
|
-
modelData = await transformer.transform(modelName, modelData, true);
|
|
45
|
-
return patch.call(this, modelName, modelData, where);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const patchById = adapter.patchById;
|
|
49
|
-
adapter.patchById = async function (modelName, id, modelData, filter) {
|
|
50
|
-
modelData = await transformer.transform(modelName, modelData, true);
|
|
51
|
-
return patchById.call(this, modelName, id, modelData, filter);
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import {expect} from 'chai';
|
|
2
|
-
import {chai} from '../../chai.js';
|
|
3
|
-
import {Adapter} from '../adapter.js';
|
|
4
|
-
import {DatabaseSchema} from '../../database-schema.js';
|
|
5
|
-
import {ModelDataTransformer} from '../../definition/index.js';
|
|
6
|
-
|
|
7
|
-
const MODEL_NAME = 'myModel';
|
|
8
|
-
const MODEL_DATA = {kind: 'modelData'};
|
|
9
|
-
const TRANSFORMED_DATA = {kind: 'transformedData'};
|
|
10
|
-
const WHERE_CLAUSE = {kind: {existed: true}};
|
|
11
|
-
const FILTER_CLAUSE = {where: WHERE_CLAUSE};
|
|
12
|
-
const DUMMY_ID = 1;
|
|
13
|
-
|
|
14
|
-
class TestAdapter extends Adapter {
|
|
15
|
-
create(modelName, modelData, filter = undefined) {
|
|
16
|
-
expect(modelName).to.be.eq(MODEL_NAME);
|
|
17
|
-
expect(modelData).to.be.eql(TRANSFORMED_DATA);
|
|
18
|
-
expect(filter).to.be.eql(FILTER_CLAUSE);
|
|
19
|
-
return Promise.resolve(modelData);
|
|
20
|
-
}
|
|
21
|
-
replaceById(modelName, id, modelData, filter = undefined) {
|
|
22
|
-
expect(modelName).to.be.eq(MODEL_NAME);
|
|
23
|
-
expect(id).to.be.eq(DUMMY_ID);
|
|
24
|
-
expect(modelData).to.be.eql(TRANSFORMED_DATA);
|
|
25
|
-
expect(filter).to.be.eql(FILTER_CLAUSE);
|
|
26
|
-
return Promise.resolve(modelData);
|
|
27
|
-
}
|
|
28
|
-
replaceOrCreate(modelName, modelData, filter = undefined) {
|
|
29
|
-
expect(modelName).to.be.eq(MODEL_NAME);
|
|
30
|
-
expect(modelData).to.be.eql(TRANSFORMED_DATA);
|
|
31
|
-
expect(filter).to.be.eql(FILTER_CLAUSE);
|
|
32
|
-
return Promise.resolve(modelData);
|
|
33
|
-
}
|
|
34
|
-
patch(modelName, modelData, where = undefined) {
|
|
35
|
-
expect(modelName).to.be.eq(MODEL_NAME);
|
|
36
|
-
expect(modelData).to.be.eql(TRANSFORMED_DATA);
|
|
37
|
-
expect(where).to.be.eql(WHERE_CLAUSE);
|
|
38
|
-
return Promise.resolve(modelData);
|
|
39
|
-
}
|
|
40
|
-
patchById(modelName, id, modelData, filter = undefined) {
|
|
41
|
-
expect(modelName).to.be.eq(MODEL_NAME);
|
|
42
|
-
expect(id).to.be.eq(DUMMY_ID);
|
|
43
|
-
expect(modelData).to.be.eql(TRANSFORMED_DATA);
|
|
44
|
-
expect(filter).to.be.eql(FILTER_CLAUSE);
|
|
45
|
-
return Promise.resolve(modelData);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const dbs = new DatabaseSchema();
|
|
50
|
-
dbs.defineModel({name: MODEL_NAME});
|
|
51
|
-
const A = dbs.getService(TestAdapter);
|
|
52
|
-
const T = dbs.getService(ModelDataTransformer);
|
|
53
|
-
const sandbox = chai.spy.sandbox();
|
|
54
|
-
|
|
55
|
-
describe('DataTransformationDecorator', function () {
|
|
56
|
-
afterEach(function () {
|
|
57
|
-
sandbox.restore();
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
describe('overrides the "create" method', function () {
|
|
61
|
-
it('transforms the given data', async function () {
|
|
62
|
-
sandbox.on(T, 'transform', () => TRANSFORMED_DATA);
|
|
63
|
-
const res = await A.create(MODEL_NAME, MODEL_DATA, FILTER_CLAUSE);
|
|
64
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
65
|
-
expect(T.transform).to.be.called.once;
|
|
66
|
-
expect(T.transform).to.be.called.with.exactly(MODEL_NAME, MODEL_DATA);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it('resolves the transformation promise', async function () {
|
|
70
|
-
sandbox.on(T, 'transform', () => Promise.resolve(TRANSFORMED_DATA));
|
|
71
|
-
const res = await A.create(MODEL_NAME, MODEL_DATA, FILTER_CLAUSE);
|
|
72
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
73
|
-
expect(T.transform).to.be.called.once;
|
|
74
|
-
expect(T.transform).to.be.called.with.exactly(MODEL_NAME, MODEL_DATA);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
describe('overrides the "replaceById" method', function () {
|
|
79
|
-
it('transforms the given data', async function () {
|
|
80
|
-
sandbox.on(T, 'transform', () => TRANSFORMED_DATA);
|
|
81
|
-
const res = await A.replaceById(
|
|
82
|
-
MODEL_NAME,
|
|
83
|
-
DUMMY_ID,
|
|
84
|
-
MODEL_DATA,
|
|
85
|
-
FILTER_CLAUSE,
|
|
86
|
-
);
|
|
87
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
88
|
-
expect(T.transform).to.be.called.once;
|
|
89
|
-
expect(T.transform).to.be.called.with.exactly(MODEL_NAME, MODEL_DATA);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('resolves the transformation promise', async function () {
|
|
93
|
-
sandbox.on(T, 'transform', () => Promise.resolve(TRANSFORMED_DATA));
|
|
94
|
-
const res = await A.replaceById(
|
|
95
|
-
MODEL_NAME,
|
|
96
|
-
DUMMY_ID,
|
|
97
|
-
MODEL_DATA,
|
|
98
|
-
FILTER_CLAUSE,
|
|
99
|
-
);
|
|
100
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
101
|
-
expect(T.transform).to.be.called.once;
|
|
102
|
-
expect(T.transform).to.be.called.with.exactly(MODEL_NAME, MODEL_DATA);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
describe('overrides the "replaceOrCreate" method', function () {
|
|
107
|
-
it('transforms the given data', async function () {
|
|
108
|
-
sandbox.on(T, 'transform', () => TRANSFORMED_DATA);
|
|
109
|
-
const res = await A.replaceOrCreate(
|
|
110
|
-
MODEL_NAME,
|
|
111
|
-
MODEL_DATA,
|
|
112
|
-
FILTER_CLAUSE,
|
|
113
|
-
);
|
|
114
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
115
|
-
expect(T.transform).to.be.called.once;
|
|
116
|
-
expect(T.transform).to.be.called.with.exactly(MODEL_NAME, MODEL_DATA);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it('resolves the transformation promise', async function () {
|
|
120
|
-
sandbox.on(T, 'transform', () => Promise.resolve(TRANSFORMED_DATA));
|
|
121
|
-
const res = await A.replaceOrCreate(
|
|
122
|
-
MODEL_NAME,
|
|
123
|
-
MODEL_DATA,
|
|
124
|
-
FILTER_CLAUSE,
|
|
125
|
-
);
|
|
126
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
127
|
-
expect(T.transform).to.be.called.once;
|
|
128
|
-
expect(T.transform).to.be.called.with.exactly(MODEL_NAME, MODEL_DATA);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
describe('overrides the "patch" method', function () {
|
|
133
|
-
it('transforms the given data', async function () {
|
|
134
|
-
sandbox.on(T, 'transform', () => TRANSFORMED_DATA);
|
|
135
|
-
const res = await A.patch(MODEL_NAME, MODEL_DATA, WHERE_CLAUSE);
|
|
136
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
137
|
-
expect(T.transform).to.be.called.once;
|
|
138
|
-
expect(T.transform).to.be.called.with.exactly(
|
|
139
|
-
MODEL_NAME,
|
|
140
|
-
MODEL_DATA,
|
|
141
|
-
true,
|
|
142
|
-
);
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
it('resolves the transformation promise', async function () {
|
|
146
|
-
sandbox.on(T, 'transform', () => Promise.resolve(TRANSFORMED_DATA));
|
|
147
|
-
const res = await A.patch(MODEL_NAME, MODEL_DATA, WHERE_CLAUSE);
|
|
148
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
149
|
-
expect(T.transform).to.be.called.once;
|
|
150
|
-
expect(T.transform).to.be.called.with.exactly(
|
|
151
|
-
MODEL_NAME,
|
|
152
|
-
MODEL_DATA,
|
|
153
|
-
true,
|
|
154
|
-
);
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
describe('overrides the "patchById" method', function () {
|
|
159
|
-
it('transforms the given data', async function () {
|
|
160
|
-
sandbox.on(T, 'transform', () => TRANSFORMED_DATA);
|
|
161
|
-
const res = await A.patchById(
|
|
162
|
-
MODEL_NAME,
|
|
163
|
-
DUMMY_ID,
|
|
164
|
-
MODEL_DATA,
|
|
165
|
-
FILTER_CLAUSE,
|
|
166
|
-
);
|
|
167
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
168
|
-
expect(T.transform).to.be.called.once;
|
|
169
|
-
expect(T.transform).to.be.called.with.exactly(
|
|
170
|
-
MODEL_NAME,
|
|
171
|
-
MODEL_DATA,
|
|
172
|
-
true,
|
|
173
|
-
);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it('resolves the transformation promise', async function () {
|
|
177
|
-
sandbox.on(T, 'transform', () => Promise.resolve(TRANSFORMED_DATA));
|
|
178
|
-
const res = await A.patchById(
|
|
179
|
-
MODEL_NAME,
|
|
180
|
-
DUMMY_ID,
|
|
181
|
-
MODEL_DATA,
|
|
182
|
-
FILTER_CLAUSE,
|
|
183
|
-
);
|
|
184
|
-
expect(res).to.be.eql(TRANSFORMED_DATA);
|
|
185
|
-
expect(T.transform).to.be.called.once;
|
|
186
|
-
expect(T.transform).to.be.called.with.exactly(
|
|
187
|
-
MODEL_NAME,
|
|
188
|
-
MODEL_DATA,
|
|
189
|
-
true,
|
|
190
|
-
);
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import {Service} from '@e22m4u/js-service';
|
|
2
|
-
import {Adapter} from '../adapter.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Data validation decorator.
|
|
6
|
-
*/
|
|
7
|
-
export declare class DataValidationDecorator extends Service {
|
|
8
|
-
/**
|
|
9
|
-
* Decorate.
|
|
10
|
-
*
|
|
11
|
-
* @param adapter
|
|
12
|
-
*/
|
|
13
|
-
decorate(adapter: Adapter): void;
|
|
14
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import {Adapter} from '../adapter.js';
|
|
2
|
-
import {Service} from '@e22m4u/js-service';
|
|
3
|
-
import {InvalidArgumentError} from '../../errors/index.js';
|
|
4
|
-
import {ModelDataValidator} from '../../definition/index.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Data validation decorator.
|
|
8
|
-
*/
|
|
9
|
-
export class DataValidationDecorator extends Service {
|
|
10
|
-
/**
|
|
11
|
-
* Decorate.
|
|
12
|
-
*
|
|
13
|
-
* @param {Adapter} adapter
|
|
14
|
-
*/
|
|
15
|
-
decorate(adapter) {
|
|
16
|
-
if (!adapter || !(adapter instanceof Adapter))
|
|
17
|
-
throw new InvalidArgumentError(
|
|
18
|
-
'The first argument of DataValidationDecorator.decorate should be ' +
|
|
19
|
-
'an Adapter instance, but %v was given.',
|
|
20
|
-
adapter,
|
|
21
|
-
);
|
|
22
|
-
const validator = this.getService(ModelDataValidator);
|
|
23
|
-
|
|
24
|
-
const create = adapter.create;
|
|
25
|
-
adapter.create = function (modelName, modelData, filter) {
|
|
26
|
-
validator.validate(modelName, modelData);
|
|
27
|
-
return create.call(this, modelName, modelData, filter);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const replaceById = adapter.replaceById;
|
|
31
|
-
adapter.replaceById = function (modelName, id, modelData, filter) {
|
|
32
|
-
validator.validate(modelName, modelData);
|
|
33
|
-
return replaceById.call(this, modelName, id, modelData, filter);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const replaceOrCreate = adapter.replaceOrCreate;
|
|
37
|
-
adapter.replaceOrCreate = function (modelName, modelData, filter) {
|
|
38
|
-
validator.validate(modelName, modelData);
|
|
39
|
-
return replaceOrCreate.call(this, modelName, modelData, filter);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const patch = adapter.patch;
|
|
43
|
-
adapter.patch = function (modelName, modelData, where) {
|
|
44
|
-
validator.validate(modelName, modelData, true);
|
|
45
|
-
return patch.call(this, modelName, modelData, where);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const patchById = adapter.patchById;
|
|
49
|
-
adapter.patchById = function (modelName, id, modelData, filter) {
|
|
50
|
-
validator.validate(modelName, modelData, true);
|
|
51
|
-
return patchById.call(this, modelName, id, modelData, filter);
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
}
|