vona-module-a-orm 5.1.5 → 5.1.7
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/cli/entity/metadata/generate.ts +13 -3
- package/cli/model/metadata/generate.ts +6 -3
- package/cli/model/metadata/magic.ts +6 -1
- package/dist/.metadata/index.d.ts +25 -25
- package/dist/.metadata/index.d.ts.map +1 -1
- package/dist/.metadata/locales.d.ts.map +1 -1
- package/dist/bean/aopMethod.transaction.d.ts.map +1 -1
- package/dist/bean/bean.database.d.ts.map +1 -1
- package/dist/bean/bean.databaseDialectBase.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_cache.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_crud.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_crud_inner.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_crud_table.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_knex.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_meta.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_utils.d.ts.map +1 -1
- package/dist/bean/bean.model/bean.model_view.d.ts.map +1 -1
- package/dist/bean/event.clientNameReal.d.ts.map +1 -1
- package/dist/bean/event.columnsClear.d.ts.map +1 -1
- package/dist/bean/queue.doubleDelete.d.ts.map +1 -1
- package/dist/bean/schedule.softDeletionPrune.d.ts.map +1 -1
- package/dist/common/buildWhere.d.ts.map +1 -1
- package/dist/common/utils.d.ts.map +1 -1
- package/dist/extend/schemaBuilder.d.ts.map +1 -1
- package/dist/extend/tableBuilder.d.ts.map +1 -1
- package/dist/index.js +33 -33
- package/dist/index.js.map +1 -1
- package/dist/lib/const.d.ts.map +1 -1
- package/dist/lib/databaseDialect.d.ts.map +1 -1
- package/dist/lib/dto/dtoAggregate.d.ts.map +1 -1
- package/dist/lib/dto/dtoCreate.d.ts.map +1 -1
- package/dist/lib/dto/dtoGet.d.ts.map +1 -1
- package/dist/lib/dto/dtoGroup.d.ts.map +1 -1
- package/dist/lib/dto/dtoListAndCount.d.ts.map +1 -1
- package/dist/lib/dto/dtoMutate.d.ts.map +1 -1
- package/dist/lib/dto/dtoQueryPage.d.ts.map +1 -1
- package/dist/lib/dto/dtoSelectAndCount.d.ts.map +1 -1
- package/dist/lib/dto/dtoUpdate.d.ts.map +1 -1
- package/dist/lib/entity.d.ts.map +1 -1
- package/dist/lib/modelCacheBase.d.ts.map +1 -1
- package/dist/lib/relations.d.ts.map +1 -1
- package/dist/lib/relationsDynamic.d.ts.map +1 -1
- package/dist/lib/relationsMutate.d.ts.map +1 -1
- package/dist/lib/relationsStatic.d.ts.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/service/columnsCache_.d.ts.map +1 -1
- package/dist/service/database.d.ts.map +1 -1
- package/dist/service/databaseClient_.d.ts.map +1 -1
- package/dist/service/relations_.d.ts.map +1 -1
- package/dist/service/transaction_.d.ts.map +1 -1
- package/dist/types/dto/dtoGet.d.ts.map +1 -1
- package/dist/types/dto/dtoGroup.d.ts.map +1 -1
- package/dist/types/dto/dtoMutate.d.ts.map +1 -1
- package/dist/types/dto/dtoQueryBase.d.ts.map +1 -1
- package/dist/types/dto/dtoSelectAndCount.d.ts.map +1 -1
- package/dist/types/entity.d.ts.map +1 -1
- package/dist/types/model.d.ts +5 -1
- package/dist/types/model.d.ts.map +1 -1
- package/dist/types/modelAggr.d.ts.map +1 -1
- package/dist/types/modelCount.d.ts.map +1 -1
- package/dist/types/modelGeneral.d.ts.map +1 -1
- package/dist/types/modelGroup.d.ts.map +1 -1
- package/dist/types/modelIncrement.d.ts.map +1 -1
- package/dist/types/modelWhere.d.ts.map +1 -1
- package/dist/types/onion/entity.d.ts +2 -2
- package/dist/types/onion/entity.d.ts.map +1 -1
- package/dist/types/onion/model.d.ts.map +1 -1
- package/dist/types/relations.d.ts.map +1 -1
- package/dist/types/relationsAggr.d.ts +1 -1
- package/dist/types/relationsAggr.d.ts.map +1 -1
- package/dist/types/relationsColumns.d.ts.map +1 -1
- package/dist/types/relationsDef.d.ts.map +1 -1
- package/dist/types/relationsDefDynamic.d.ts.map +1 -1
- package/dist/types/relationsDefMutate.d.ts.map +1 -1
- package/dist/types/relationsGroup.d.ts.map +1 -1
- package/dist/types/relationsMutate.d.ts.map +1 -1
- package/dist/types/relationsTables.d.ts.map +1 -1
- package/dist/types/transaction.d.ts.map +1 -1
- package/dist-cli/entity/metadata/generate.js +4 -1
- package/dist-cli/model/metadata/generate.js +4 -2
- package/package.json +1 -1
- package/src/.metadata/index.ts +39 -39
- package/src/.metadata/locales.ts +6 -1
- package/src/bean/aopMethod.transaction.ts +9 -2
- package/src/bean/bean.database.ts +33 -8
- package/src/bean/bean.databaseDialectBase.ts +42 -9
- package/src/bean/bean.model/bean.model_cache.ts +130 -46
- package/src/bean/bean.model/bean.model_crud.ts +28 -7
- package/src/bean/bean.model/bean.model_crud_inner.ts +17 -4
- package/src/bean/bean.model/bean.model_crud_table.ts +25 -5
- package/src/bean/bean.model/bean.model_knex.ts +18 -5
- package/src/bean/bean.model/bean.model_meta.ts +23 -5
- package/src/bean/bean.model/bean.model_utils.ts +55 -12
- package/src/bean/bean.model/bean.model_view.ts +20 -5
- package/src/bean/event.clientNameReal.ts +4 -1
- package/src/bean/event.columnsClear.ts +4 -1
- package/src/bean/queue.doubleDelete.ts +9 -2
- package/src/bean/schedule.softDeletionPrune.ts +3 -1
- package/src/common/buildWhere.ts +30 -5
- package/src/common/utils.ts +6 -2
- package/src/extend/schemaBuilder.ts +2 -1
- package/src/extend/tableBuilder.ts +32 -19
- package/src/lib/const.ts +3 -1
- package/src/lib/databaseDialect.ts +3 -1
- package/src/lib/dto/dtoAggregate.ts +18 -6
- package/src/lib/dto/dtoCreate.ts +24 -4
- package/src/lib/dto/dtoGet.ts +82 -17
- package/src/lib/dto/dtoGroup.ts +24 -8
- package/src/lib/dto/dtoListAndCount.ts +3 -1
- package/src/lib/dto/dtoMutate.ts +26 -7
- package/src/lib/dto/dtoQueryPage.ts +4 -1
- package/src/lib/dto/dtoSelectAndCount.ts +3 -1
- package/src/lib/dto/dtoUpdate.ts +24 -4
- package/src/lib/entity.ts +10 -4
- package/src/lib/modelCacheBase.ts +9 -3
- package/src/lib/relations.ts +22 -4
- package/src/lib/relationsDynamic.ts +29 -7
- package/src/lib/relationsMutate.ts +28 -5
- package/src/lib/relationsStatic.ts +4 -1
- package/src/lib/utils.ts +11 -2
- package/src/main.ts +10 -2
- package/src/service/columnsCache_.ts +8 -6
- package/src/service/database.ts +34 -10
- package/src/service/databaseClient_.ts +4 -1
- package/src/service/relations_.ts +98 -23
- package/src/service/transaction_.ts +14 -4
- package/src/types/dto/dtoGet.ts +14 -6
- package/src/types/dto/dtoGroup.ts +2 -1
- package/src/types/dto/dtoMutate.ts +102 -20
- package/src/types/dto/dtoQueryBase.ts +5 -1
- package/src/types/dto/dtoSelectAndCount.ts +4 -1
- package/src/types/entity.ts +3 -1
- package/src/types/entityBase.ts +1 -1
- package/src/types/entityBaseInner.ts +4 -4
- package/src/types/entityBaseSimple.ts +1 -1
- package/src/types/model.ts +73 -16
- package/src/types/modelAggr.ts +18 -6
- package/src/types/modelCount.ts +4 -1
- package/src/types/modelGeneral.ts +26 -5
- package/src/types/modelGroup.ts +8 -2
- package/src/types/modelIncrement.ts +4 -1
- package/src/types/modelWhere.ts +12 -3
- package/src/types/onion/entity.ts +2 -2
- package/src/types/onion/model.ts +20 -4
- package/src/types/relations.ts +151 -47
- package/src/types/relationsAggr.ts +35 -11
- package/src/types/relationsColumns.ts +80 -57
- package/src/types/relationsDef.ts +82 -29
- package/src/types/relationsDefDynamic.ts +59 -13
- package/src/types/relationsDefMutate.ts +3 -1
- package/src/types/relationsGroup.ts +32 -10
- package/src/types/relationsMutate.ts +60 -19
- package/src/types/relationsTables.ts +16 -14
- package/src/types/transaction.ts +14 -2
package/src/lib/dto/dtoGet.ts
CHANGED
|
@@ -2,7 +2,14 @@ import type { Constructable } from 'vona';
|
|
|
2
2
|
|
|
3
3
|
import { ensureArray, hashkey } from '@cabloy/utils';
|
|
4
4
|
import { $Class, appResource } from 'vona';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
addSchemaDynamic,
|
|
7
|
+
Api,
|
|
8
|
+
getSchemaDynamic,
|
|
9
|
+
schemaRenderVisible,
|
|
10
|
+
SymbolSchemaDynamicRefId,
|
|
11
|
+
v,
|
|
12
|
+
} from 'vona-module-a-openapiutils';
|
|
6
13
|
import z from 'zod';
|
|
7
14
|
|
|
8
15
|
import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
|
|
@@ -12,21 +19,35 @@ import type { IModelRelationIncludeWrapper } from '../../types/model.ts';
|
|
|
12
19
|
import type { IDecoratorModelOptions, IModelClassRecord } from '../../types/onion/model.ts';
|
|
13
20
|
import type { IRelationItem } from '../../types/relationsDef.ts';
|
|
14
21
|
|
|
15
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
getClassEntityFromClassModel,
|
|
24
|
+
prepareClassModel,
|
|
25
|
+
prepareColumns,
|
|
26
|
+
} from '../../common/utils.ts';
|
|
16
27
|
import { handleRelationsCollection } from '../utils.ts';
|
|
17
28
|
import { DtoAggregate } from './dtoAggregate.ts';
|
|
18
29
|
import { DtoGroup } from './dtoGroup.ts';
|
|
19
30
|
import { _DtoMutate_raw } from './dtoMutate.ts';
|
|
20
31
|
|
|
21
|
-
export function DtoGet<
|
|
22
|
-
|
|
32
|
+
export function DtoGet<
|
|
33
|
+
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
34
|
+
T extends IDtoGetParams<ModelLike> | undefined = undefined,
|
|
35
|
+
>(
|
|
36
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
37
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
38
|
+
: ModelLike,
|
|
23
39
|
params?: T,
|
|
24
40
|
): Constructable<TypeDtoGetResult<ModelLike, T>> {
|
|
25
41
|
return _DtoGet_raw(modelLike, params);
|
|
26
42
|
}
|
|
27
43
|
|
|
28
|
-
function _DtoGet_raw<
|
|
29
|
-
|
|
44
|
+
function _DtoGet_raw<
|
|
45
|
+
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
46
|
+
T extends IDtoGetParams<ModelLike> | undefined = undefined,
|
|
47
|
+
>(
|
|
48
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
49
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
50
|
+
: ModelLike,
|
|
30
51
|
params?: T,
|
|
31
52
|
): Constructable<TypeDtoGetResult<ModelLike, T>> {
|
|
32
53
|
// model
|
|
@@ -74,21 +95,39 @@ function _DtoGet_relation_handle<TRecord extends {}>(
|
|
|
74
95
|
if (type === 'belongsToMany') {
|
|
75
96
|
schema = v.array(z.object({ id: v.tableIdentity()(), deleted: z.boolean().optional() }));
|
|
76
97
|
} else if (type === 'hasOne') {
|
|
77
|
-
const schemaLazy = _DtoGet_relation_handle_schemaLazy(
|
|
78
|
-
|
|
98
|
+
const schemaLazy = _DtoGet_relation_handle_schemaLazy(
|
|
99
|
+
modelTarget,
|
|
100
|
+
optionsReal,
|
|
101
|
+
autoload,
|
|
102
|
+
mutateTypeTopLevel,
|
|
103
|
+
relation,
|
|
104
|
+
);
|
|
105
|
+
schema = v.lazy(schemaRenderVisible(false), schemaLazy);
|
|
79
106
|
// optional = true;
|
|
80
107
|
} else {
|
|
81
108
|
// hasMany
|
|
82
|
-
const schemaLazy = _DtoGet_relation_handle_schemaLazy(
|
|
109
|
+
const schemaLazy = _DtoGet_relation_handle_schemaLazy(
|
|
110
|
+
modelTarget,
|
|
111
|
+
optionsReal,
|
|
112
|
+
autoload,
|
|
113
|
+
mutateTypeTopLevel,
|
|
114
|
+
relation,
|
|
115
|
+
);
|
|
83
116
|
schema = v.array(v.lazy(schemaLazy));
|
|
84
117
|
}
|
|
85
118
|
Api.field(v.optional(), schema)(entityClass.prototype, relationName);
|
|
86
119
|
} else {
|
|
87
|
-
const schemaLazy = _DtoGet_relation_handle_schemaLazy(
|
|
120
|
+
const schemaLazy = _DtoGet_relation_handle_schemaLazy(
|
|
121
|
+
modelTarget,
|
|
122
|
+
optionsReal,
|
|
123
|
+
autoload,
|
|
124
|
+
mutateTypeTopLevel,
|
|
125
|
+
relation,
|
|
126
|
+
);
|
|
88
127
|
let schema;
|
|
89
128
|
let optional = false;
|
|
90
129
|
if (type === 'hasOne' || type === 'belongsTo') {
|
|
91
|
-
schema = v.lazy(
|
|
130
|
+
schema = v.lazy(schemaRenderVisible(false), schemaLazy);
|
|
92
131
|
optional = true;
|
|
93
132
|
} else {
|
|
94
133
|
if (optionsReal.groups) {
|
|
@@ -108,10 +147,21 @@ function _DtoGet_relation_handle<TRecord extends {}>(
|
|
|
108
147
|
}
|
|
109
148
|
}
|
|
110
149
|
|
|
111
|
-
function _DtoGet_relation_handle_schemaLazy(
|
|
150
|
+
function _DtoGet_relation_handle_schemaLazy(
|
|
151
|
+
modelTarget,
|
|
152
|
+
optionsReal,
|
|
153
|
+
autoload,
|
|
154
|
+
mutateTypeTopLevel?: TypeDtoMutateType,
|
|
155
|
+
relation?: IRelationItem,
|
|
156
|
+
) {
|
|
112
157
|
return () => {
|
|
113
158
|
if (!autoload) {
|
|
114
|
-
return _DtoGet_relation_handle_schemaLazy_raw(
|
|
159
|
+
return _DtoGet_relation_handle_schemaLazy_raw(
|
|
160
|
+
modelTarget,
|
|
161
|
+
optionsReal,
|
|
162
|
+
mutateTypeTopLevel,
|
|
163
|
+
relation,
|
|
164
|
+
);
|
|
115
165
|
}
|
|
116
166
|
// dynamic
|
|
117
167
|
const entityClass = getClassEntityFromClassModel(modelTarget);
|
|
@@ -120,7 +170,12 @@ function _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload,
|
|
|
120
170
|
const dynamicName = `${beanFullName}_${_hashkey}`;
|
|
121
171
|
let entityTarget = getSchemaDynamic(dynamicName);
|
|
122
172
|
if (!entityTarget) {
|
|
123
|
-
entityTarget = _DtoGet_relation_handle_schemaLazy_raw(
|
|
173
|
+
entityTarget = _DtoGet_relation_handle_schemaLazy_raw(
|
|
174
|
+
modelTarget,
|
|
175
|
+
optionsReal,
|
|
176
|
+
mutateTypeTopLevel,
|
|
177
|
+
relation,
|
|
178
|
+
);
|
|
124
179
|
entityTarget[SymbolSchemaDynamicRefId] = dynamicName;
|
|
125
180
|
addSchemaDynamic(dynamicName, entityTarget);
|
|
126
181
|
}
|
|
@@ -128,7 +183,12 @@ function _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload,
|
|
|
128
183
|
};
|
|
129
184
|
}
|
|
130
185
|
|
|
131
|
-
function _DtoGet_relation_handle_schemaLazy_raw(
|
|
186
|
+
function _DtoGet_relation_handle_schemaLazy_raw(
|
|
187
|
+
modelTarget,
|
|
188
|
+
optionsReal,
|
|
189
|
+
mutateTypeTopLevel?: TypeDtoMutateType,
|
|
190
|
+
relation?: IRelationItem,
|
|
191
|
+
) {
|
|
132
192
|
if (mutateTypeTopLevel) {
|
|
133
193
|
return _DtoMutate_raw(modelTarget, optionsReal, mutateTypeTopLevel, undefined, false, relation); // columnsOmitDefault: undefined
|
|
134
194
|
} else {
|
|
@@ -142,11 +202,16 @@ function _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutate
|
|
|
142
202
|
}
|
|
143
203
|
}
|
|
144
204
|
|
|
145
|
-
function _DtoGet_relation_handle_schemaLazy_hashkey(
|
|
205
|
+
function _DtoGet_relation_handle_schemaLazy_hashkey(
|
|
206
|
+
optionsReal,
|
|
207
|
+
mutateTypeTopLevel?: TypeDtoMutateType,
|
|
208
|
+
) {
|
|
146
209
|
const columns = prepareColumns(optionsReal.columns);
|
|
147
210
|
const aggrs = ensureArray(optionsReal.aggrs);
|
|
148
211
|
const groups = ensureArray(optionsReal.groups);
|
|
149
|
-
return columns || aggrs || groups || mutateTypeTopLevel
|
|
212
|
+
return columns || aggrs || groups || mutateTypeTopLevel
|
|
213
|
+
? hashkey({ columns, aggrs, groups, mutate: mutateTypeTopLevel })
|
|
214
|
+
: 'none';
|
|
150
215
|
}
|
|
151
216
|
|
|
152
217
|
function _DtoGet_relations_collection<TModel extends BeanModelMeta>(
|
package/src/lib/dto/dtoGroup.ts
CHANGED
|
@@ -16,28 +16,44 @@ import { _DtoAggregate_inner } from './dtoAggregate.ts';
|
|
|
16
16
|
export function DtoGroup<
|
|
17
17
|
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
18
18
|
Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
|
|
19
|
-
Aggrs extends
|
|
20
|
-
|
|
19
|
+
Aggrs extends
|
|
20
|
+
| TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>
|
|
21
|
+
| undefined = undefined,
|
|
22
|
+
Columns extends
|
|
23
|
+
| TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>
|
|
24
|
+
| undefined = undefined,
|
|
21
25
|
>(
|
|
22
|
-
modelLike: ModelLike extends BeanModelMeta
|
|
26
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
27
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
28
|
+
: ModelLike,
|
|
23
29
|
groups: Groups,
|
|
24
30
|
aggrs?: Aggrs,
|
|
25
31
|
columns?: Columns,
|
|
26
|
-
): Constructable<
|
|
32
|
+
): Constructable<
|
|
33
|
+
TypeDtoGroupResult<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], Aggrs, Groups, Columns>
|
|
34
|
+
> {
|
|
27
35
|
return _DtoGroup_raw(modelLike, groups, aggrs, columns);
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
function _DtoGroup_raw<
|
|
31
39
|
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
32
40
|
Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>,
|
|
33
|
-
Aggrs extends
|
|
34
|
-
|
|
41
|
+
Aggrs extends
|
|
42
|
+
| TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>
|
|
43
|
+
| undefined = undefined,
|
|
44
|
+
Columns extends
|
|
45
|
+
| TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>
|
|
46
|
+
| undefined = undefined,
|
|
35
47
|
>(
|
|
36
|
-
modelLike: ModelLike extends BeanModelMeta
|
|
48
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
49
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
50
|
+
: ModelLike,
|
|
37
51
|
groups: Groups,
|
|
38
52
|
aggrs?: Aggrs,
|
|
39
53
|
columns?: Columns,
|
|
40
|
-
): Constructable<
|
|
54
|
+
): Constructable<
|
|
55
|
+
TypeDtoGroupResult<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], Aggrs, Groups, Columns>
|
|
56
|
+
> {
|
|
41
57
|
abstract class TargetClass {}
|
|
42
58
|
// model
|
|
43
59
|
const modelClass = prepareClassModel(modelLike);
|
|
@@ -5,7 +5,9 @@ import z from 'zod';
|
|
|
5
5
|
|
|
6
6
|
import type { TypeDtoListAndCountResult } from '../../types/dto/dtoListAndCount.ts';
|
|
7
7
|
|
|
8
|
-
export function DtoListAndCount<T>(
|
|
8
|
+
export function DtoListAndCount<T>(
|
|
9
|
+
classRef: Constructable<T>,
|
|
10
|
+
): Constructable<TypeDtoListAndCountResult<T>> {
|
|
9
11
|
abstract class TargetClass {}
|
|
10
12
|
Api.field(v.array(classRef))(TargetClass.prototype, 'list');
|
|
11
13
|
Api.field(z.string())(TargetClass.prototype, 'total');
|
package/src/lib/dto/dtoMutate.ts
CHANGED
|
@@ -4,17 +4,30 @@ import { mutate } from 'mutate-on-copy';
|
|
|
4
4
|
import { $Class } from 'vona';
|
|
5
5
|
|
|
6
6
|
import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
IDtoMutateParams,
|
|
9
|
+
TypeDtoMutateResult,
|
|
10
|
+
TypeDtoMutateType,
|
|
11
|
+
} from '../../types/dto/dtoMutate.ts';
|
|
8
12
|
import type { TypeModelColumnsStrict } from '../../types/modelWhere.ts';
|
|
9
13
|
import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
10
14
|
import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../../types/relations.ts';
|
|
11
15
|
import type { IRelationItem } from '../../types/relationsDef.ts';
|
|
12
16
|
|
|
13
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
getClassEntityFromClassModel,
|
|
19
|
+
prepareClassModel,
|
|
20
|
+
prepareColumns,
|
|
21
|
+
} from '../../common/utils.ts';
|
|
14
22
|
import { _DtoGet_relations } from './dtoGet.ts';
|
|
15
23
|
|
|
16
|
-
export function DtoMutate<
|
|
17
|
-
|
|
24
|
+
export function DtoMutate<
|
|
25
|
+
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
26
|
+
T extends IDtoMutateParams<ModelLike> | undefined = undefined,
|
|
27
|
+
>(
|
|
28
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
29
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
30
|
+
: ModelLike,
|
|
18
31
|
params?: T,
|
|
19
32
|
): Constructable<TypeDtoMutateResult<ModelLike, T, 'mutate', undefined, true>> {
|
|
20
33
|
return _DtoMutate_raw(modelLike, params, 'mutate', undefined, true, undefined);
|
|
@@ -23,9 +36,13 @@ export function DtoMutate<ModelLike extends BeanModelMeta | keyof IModelClassRec
|
|
|
23
36
|
export function _DtoMutate_raw<
|
|
24
37
|
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
25
38
|
T extends IDtoMutateParams<ModelLike> | undefined = undefined,
|
|
26
|
-
ColumnsOmitDefault extends
|
|
39
|
+
ColumnsOmitDefault extends
|
|
40
|
+
| TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>
|
|
41
|
+
| undefined = undefined,
|
|
27
42
|
>(
|
|
28
|
-
modelLike: ModelLike extends BeanModelMeta
|
|
43
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
44
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
45
|
+
: ModelLike,
|
|
29
46
|
params?: T,
|
|
30
47
|
mutateTypeTopLevel?: TypeDtoMutateType,
|
|
31
48
|
columnsOmitDefault?: ColumnsOmitDefault,
|
|
@@ -63,7 +80,9 @@ export function _DtoMutate_raw<
|
|
|
63
80
|
} else {
|
|
64
81
|
const columns =
|
|
65
82
|
columnsOmitDefault ??
|
|
66
|
-
(mutateTypeTopLevel === 'create'
|
|
83
|
+
(mutateTypeTopLevel === 'create'
|
|
84
|
+
? ['id', 'iid', 'deleted', 'createdAt', 'updatedAt']
|
|
85
|
+
: ['iid', 'createdAt', 'updatedAt']);
|
|
67
86
|
entityClass = $Class.omit(entityClass, prepareColumns(columns as any) as any);
|
|
68
87
|
}
|
|
69
88
|
if (!topLevel && mutateTypeTopLevel !== 'create') {
|
|
@@ -4,6 +4,9 @@ import { $Class } from 'vona';
|
|
|
4
4
|
|
|
5
5
|
import { DtoQueryPageBase } from '../../types/dto/dtoQueryPageBase.ts';
|
|
6
6
|
|
|
7
|
-
export function DtoQueryPage<T, KEYS extends Array<keyof T>>(
|
|
7
|
+
export function DtoQueryPage<T, KEYS extends Array<keyof T>>(
|
|
8
|
+
classRef: Constructable<T>,
|
|
9
|
+
keys: KEYS,
|
|
10
|
+
) {
|
|
8
11
|
return $Class.mixin(DtoQueryPageBase, $Class.partial($Class.pick(classRef, keys)));
|
|
9
12
|
}
|
|
@@ -12,7 +12,9 @@ export function DtoSelectAndCount<
|
|
|
12
12
|
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
13
13
|
T extends IDtoGetParams<ModelLike> | undefined = undefined,
|
|
14
14
|
>(
|
|
15
|
-
modelLike: ModelLike extends BeanModelMeta
|
|
15
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
16
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
17
|
+
: ModelLike,
|
|
16
18
|
params?: T,
|
|
17
19
|
): Constructable<TypeDtoSelectAndCountResult<ModelLike, T>> {
|
|
18
20
|
const DtoGetResult = DtoGet(modelLike, params);
|
package/src/lib/dto/dtoUpdate.ts
CHANGED
|
@@ -6,11 +6,31 @@ import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
|
6
6
|
|
|
7
7
|
import { _DtoMutate_raw } from './dtoMutate.ts';
|
|
8
8
|
|
|
9
|
-
export function DtoUpdate<
|
|
10
|
-
|
|
9
|
+
export function DtoUpdate<
|
|
10
|
+
ModelLike extends BeanModelMeta | keyof IModelClassRecord,
|
|
11
|
+
T extends IDtoMutateParams<ModelLike> | undefined = undefined,
|
|
12
|
+
>(
|
|
13
|
+
modelLike: ModelLike extends BeanModelMeta
|
|
14
|
+
? (() => Constructable<ModelLike>) | Constructable<ModelLike>
|
|
15
|
+
: ModelLike,
|
|
11
16
|
params?: T,
|
|
12
|
-
): Constructable<
|
|
13
|
-
|
|
17
|
+
): Constructable<
|
|
18
|
+
TypeDtoMutateResult<
|
|
19
|
+
ModelLike,
|
|
20
|
+
T,
|
|
21
|
+
'update',
|
|
22
|
+
'id' | 'iid' | 'deleted' | 'createdAt' | 'updatedAt',
|
|
23
|
+
true
|
|
24
|
+
>
|
|
25
|
+
> {
|
|
26
|
+
return _DtoMutate_raw(
|
|
27
|
+
modelLike,
|
|
28
|
+
params,
|
|
29
|
+
'update',
|
|
30
|
+
['id', 'iid', 'deleted', 'createdAt', 'updatedAt'] as any,
|
|
31
|
+
true,
|
|
32
|
+
undefined,
|
|
33
|
+
);
|
|
14
34
|
}
|
|
15
35
|
|
|
16
36
|
// not use Partial/$Class.partial, for form render at frontend
|
package/src/lib/entity.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { createBeanDecorator } from 'vona';
|
|
2
|
-
import {
|
|
2
|
+
import { mergeDtoFieldsOpenapiMetadata } from 'vona-module-a-openapiutils';
|
|
3
3
|
|
|
4
4
|
import type { IDecoratorEntityOptions } from '../types/onion/entity.ts';
|
|
5
5
|
|
|
6
6
|
// const __tableNames = new Set();
|
|
7
7
|
|
|
8
8
|
export function Entity<T extends IDecoratorEntityOptions<any>>(options?: T): ClassDecorator;
|
|
9
|
-
export function Entity<T extends IDecoratorEntityOptions<any>>(
|
|
10
|
-
|
|
9
|
+
export function Entity<T extends IDecoratorEntityOptions<any>>(
|
|
10
|
+
table?: string,
|
|
11
|
+
options?: Omit<T, 'table'>,
|
|
12
|
+
): ClassDecorator;
|
|
13
|
+
export function Entity<T extends IDecoratorEntityOptions<any>>(
|
|
14
|
+
table?: T | string,
|
|
15
|
+
options?: T,
|
|
16
|
+
): ClassDecorator {
|
|
11
17
|
if (typeof table === 'string') {
|
|
12
18
|
options = Object.assign({}, options, { table });
|
|
13
19
|
} else {
|
|
@@ -20,6 +26,6 @@ export function Entity<T extends IDecoratorEntityOptions<any>>(table?: T | strin
|
|
|
20
26
|
// }
|
|
21
27
|
// __tableNames.add(tableName);
|
|
22
28
|
return createBeanDecorator('entity', options, false, target => {
|
|
23
|
-
|
|
29
|
+
mergeDtoFieldsOpenapiMetadata(target);
|
|
24
30
|
});
|
|
25
31
|
}
|
|
@@ -32,13 +32,18 @@ export class ModelCacheBase extends BeanBase {
|
|
|
32
32
|
const cacheModelCacheInstances = getCacheModelCacheInstances(this.app);
|
|
33
33
|
if (!cacheModelCacheInstances[beanFullName]) cacheModelCacheInstances[beanFullName] = {};
|
|
34
34
|
if (!cacheModelCacheInstances[beanFullName][cacheName]) {
|
|
35
|
-
cacheModelCacheInstances[beanFullName][cacheName] = this.app.bean.summer.cache<any, any>(
|
|
35
|
+
cacheModelCacheInstances[beanFullName][cacheName] = this.app.bean.summer.cache<any, any>(
|
|
36
|
+
cacheName,
|
|
37
|
+
this.options,
|
|
38
|
+
);
|
|
36
39
|
}
|
|
37
40
|
return cacheModelCacheInstances[beanFullName][cacheName];
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
public getName(table: keyof ITableRecord) {
|
|
41
|
-
const clientNameReal = this.$scope.orm.service.database.prepareClientNameReal(
|
|
44
|
+
const clientNameReal = this.$scope.orm.service.database.prepareClientNameReal(
|
|
45
|
+
this._model.db.clientName,
|
|
46
|
+
);
|
|
42
47
|
return `${this._model.$beanFullName}:${clientNameReal}:${table}:${this._cacheType}`;
|
|
43
48
|
}
|
|
44
49
|
|
|
@@ -67,7 +72,8 @@ export class ModelCacheBase extends BeanBase {
|
|
|
67
72
|
private _getCacheOptionsInner() {
|
|
68
73
|
if (this._model.options.cache?.[this._cacheType] === false) return false;
|
|
69
74
|
// options
|
|
70
|
-
let _cacheOptions = (this._model.options.cache?.[this._cacheType] ??
|
|
75
|
+
let _cacheOptions = (this._model.options.cache?.[this._cacheType] ??
|
|
76
|
+
{}) as IDecoratorSummerCacheOptions;
|
|
71
77
|
// preset
|
|
72
78
|
let configPreset;
|
|
73
79
|
let preset = _cacheOptions.preset;
|
package/src/lib/relations.ts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
2
2
|
import type { IModelClassRecord } from '../types/onion/model.ts';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type {
|
|
4
|
+
TypeModelClassLike,
|
|
5
|
+
TypeModelOfModelLike,
|
|
6
|
+
TypeModelsClassLikeGeneral,
|
|
7
|
+
TypeSymbolKeyEntity,
|
|
8
|
+
} from '../types/relations.ts';
|
|
9
|
+
import type {
|
|
10
|
+
IModelRelationOptionsManyStatic,
|
|
11
|
+
IModelRelationOptionsOneStatic,
|
|
12
|
+
} from './relationsStatic.ts';
|
|
5
13
|
|
|
6
|
-
function hasOne<
|
|
14
|
+
function hasOne<
|
|
15
|
+
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
16
|
+
OPTIONS extends IModelRelationOptionsOneStatic<TypeModelOfModelLike<MODEL>>,
|
|
17
|
+
>(
|
|
7
18
|
classModel: TypeModelClassLike<MODEL>,
|
|
8
19
|
key: keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
9
20
|
options?: OPTIONS,
|
|
@@ -58,7 +69,14 @@ function belongsToMany<
|
|
|
58
69
|
_group?: Group,
|
|
59
70
|
): any {
|
|
60
71
|
// : IModelRelationBelongsToMany<MODELMiddle, MODEL, AUTOLOAD, COLUMNS, ModelJoins> {
|
|
61
|
-
return {
|
|
72
|
+
return {
|
|
73
|
+
type: 'belongsToMany',
|
|
74
|
+
modelMiddle: classModelMiddle,
|
|
75
|
+
model: classModel,
|
|
76
|
+
keyFrom,
|
|
77
|
+
keyTo,
|
|
78
|
+
options,
|
|
79
|
+
};
|
|
62
80
|
}
|
|
63
81
|
|
|
64
82
|
export const $relation = {
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
2
2
|
import type { IModelClassRecord } from '../types/onion/model.ts';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
TypeModelClassLike,
|
|
5
|
+
TypeModelOfModelLike,
|
|
6
|
+
TypeModelsClassLikeGeneral,
|
|
7
|
+
TypeSymbolKeyEntity,
|
|
8
|
+
} from '../types/relations.ts';
|
|
4
9
|
import type {
|
|
5
10
|
IModelRelationBelongsToDynamic,
|
|
6
11
|
IModelRelationBelongsToManyDynamic,
|
|
@@ -13,15 +18,21 @@ import type {
|
|
|
13
18
|
function hasOne<
|
|
14
19
|
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
15
20
|
KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
16
|
-
OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined =
|
|
17
|
-
|
|
21
|
+
OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined =
|
|
22
|
+
undefined,
|
|
23
|
+
>(
|
|
24
|
+
classModel: TypeModelClassLike<MODEL>,
|
|
25
|
+
key: KEY,
|
|
26
|
+
options?: OPTIONS,
|
|
27
|
+
): IModelRelationHasOneDynamic<MODEL, KEY, OPTIONS> {
|
|
18
28
|
return { type: 'hasOne', model: classModel, key, options };
|
|
19
29
|
}
|
|
20
30
|
|
|
21
31
|
function belongsTo<
|
|
22
32
|
MODELSelf extends BeanModelMeta | keyof IModelClassRecord,
|
|
23
33
|
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
24
|
-
OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined =
|
|
34
|
+
OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined =
|
|
35
|
+
undefined,
|
|
25
36
|
>(
|
|
26
37
|
_classModelSelf: TypeModelClassLike<MODELSelf>,
|
|
27
38
|
classModel: TypeModelClassLike<MODEL>,
|
|
@@ -35,7 +46,9 @@ function hasMany<
|
|
|
35
46
|
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
36
47
|
KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
37
48
|
// not use `| undefined = undefined` or `= {}`
|
|
38
|
-
OPTIONS extends
|
|
49
|
+
OPTIONS extends
|
|
50
|
+
| IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group>
|
|
51
|
+
| undefined = undefined,
|
|
39
52
|
ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
|
|
40
53
|
Group extends boolean | undefined = undefined,
|
|
41
54
|
>(
|
|
@@ -52,7 +65,9 @@ function belongsToMany<
|
|
|
52
65
|
MODELMiddle extends BeanModelMeta | keyof IModelClassRecord,
|
|
53
66
|
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
54
67
|
// not use `| undefined = undefined` or `= {}`
|
|
55
|
-
OPTIONS extends
|
|
68
|
+
OPTIONS extends
|
|
69
|
+
| IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group>
|
|
70
|
+
| undefined = undefined,
|
|
56
71
|
ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined,
|
|
57
72
|
Group extends boolean | undefined = undefined,
|
|
58
73
|
>(
|
|
@@ -64,7 +79,14 @@ function belongsToMany<
|
|
|
64
79
|
_modelJoins?: ModelJoins,
|
|
65
80
|
_group?: Group,
|
|
66
81
|
): IModelRelationBelongsToManyDynamic<MODELMiddle, MODEL, OPTIONS, ModelJoins, Group> {
|
|
67
|
-
return {
|
|
82
|
+
return {
|
|
83
|
+
type: 'belongsToMany',
|
|
84
|
+
modelMiddle: classModelMiddle,
|
|
85
|
+
model: classModel,
|
|
86
|
+
keyFrom,
|
|
87
|
+
keyTo,
|
|
88
|
+
options,
|
|
89
|
+
};
|
|
68
90
|
}
|
|
69
91
|
|
|
70
92
|
export const $relationDynamic = {
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
2
2
|
import type { IModelClassRecord } from '../types/onion/model.ts';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type {
|
|
4
|
+
TypeModelClassLike,
|
|
5
|
+
TypeModelOfModelLike,
|
|
6
|
+
TypeSymbolKeyEntity,
|
|
7
|
+
} from '../types/relations.ts';
|
|
8
|
+
import type {
|
|
9
|
+
IModelRelationBelongsToManyDynamic,
|
|
10
|
+
IModelRelationHasManyDynamic,
|
|
11
|
+
IModelRelationHasOneDynamic,
|
|
12
|
+
} from '../types/relationsDefDynamic.ts';
|
|
5
13
|
import type {
|
|
6
14
|
IModelRelationOptionsBelongsToManyMutate,
|
|
7
15
|
IModelRelationOptionsManyMutate,
|
|
@@ -12,7 +20,11 @@ function hasOne<
|
|
|
12
20
|
MODEL extends BeanModelMeta | keyof IModelClassRecord,
|
|
13
21
|
KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
14
22
|
OPTIONS extends IModelRelationOptionsOneMutate<TypeModelOfModelLike<MODEL>>,
|
|
15
|
-
>(
|
|
23
|
+
>(
|
|
24
|
+
classModel: TypeModelClassLike<MODEL>,
|
|
25
|
+
key: KEY,
|
|
26
|
+
options?: OPTIONS,
|
|
27
|
+
): IModelRelationHasOneDynamic<MODEL, KEY, OPTIONS> {
|
|
16
28
|
return { type: 'hasOne', model: classModel, key, options };
|
|
17
29
|
}
|
|
18
30
|
|
|
@@ -34,7 +46,11 @@ function hasMany<
|
|
|
34
46
|
KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity],
|
|
35
47
|
// not use `| undefined = undefined` or `= {}`
|
|
36
48
|
OPTIONS extends IModelRelationOptionsManyMutate<TypeModelOfModelLike<MODEL>>,
|
|
37
|
-
>(
|
|
49
|
+
>(
|
|
50
|
+
classModel: TypeModelClassLike<MODEL>,
|
|
51
|
+
key: KEY,
|
|
52
|
+
options?: OPTIONS,
|
|
53
|
+
): IModelRelationHasManyDynamic<MODEL, KEY, OPTIONS> {
|
|
38
54
|
return { type: 'hasMany', model: classModel, key, options };
|
|
39
55
|
}
|
|
40
56
|
|
|
@@ -49,7 +65,14 @@ function belongsToMany<
|
|
|
49
65
|
keyTo: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity],
|
|
50
66
|
options?: OPTIONS,
|
|
51
67
|
): IModelRelationBelongsToManyDynamic<MODELMiddle, MODEL, OPTIONS> {
|
|
52
|
-
return {
|
|
68
|
+
return {
|
|
69
|
+
type: 'belongsToMany',
|
|
70
|
+
modelMiddle: classModelMiddle,
|
|
71
|
+
model: classModel,
|
|
72
|
+
keyFrom,
|
|
73
|
+
keyTo,
|
|
74
|
+
options,
|
|
75
|
+
};
|
|
53
76
|
}
|
|
54
77
|
|
|
55
78
|
export const $relationMutate = {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
2
2
|
import type { TypeModelsClassLikeGeneral } from '../types/relations.ts';
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
IModelRelationOptionsManyDynamic,
|
|
5
|
+
IModelRelationOptionsOneDynamic,
|
|
6
|
+
} from '../types/relationsDefDynamic.ts';
|
|
4
7
|
|
|
5
8
|
export interface IModelRelationOptionsManyStatic<
|
|
6
9
|
MODEL extends BeanModelMeta,
|
package/src/lib/utils.ts
CHANGED
|
@@ -3,7 +3,10 @@ import { deepExtend } from 'vona';
|
|
|
3
3
|
import type { IModelRelationIncludeWrapper } from '../types/model.ts';
|
|
4
4
|
import type { IRelationItem } from '../types/relationsDef.ts';
|
|
5
5
|
|
|
6
|
-
export function handleRelationsCollection(
|
|
6
|
+
export function handleRelationsCollection(
|
|
7
|
+
relationsStatic?: Record<string, any>,
|
|
8
|
+
includeWrapper?: IModelRelationIncludeWrapper,
|
|
9
|
+
): IRelationItem[] {
|
|
7
10
|
// collect
|
|
8
11
|
const relations: IRelationItem[] = [];
|
|
9
12
|
// include
|
|
@@ -38,7 +41,13 @@ export function handleRelationsCollection(relationsStatic?: Record<string, any>,
|
|
|
38
41
|
for (const key in includeWrapper.with) {
|
|
39
42
|
const relationReal: any = includeWrapper.with[key];
|
|
40
43
|
if (!relationReal) continue;
|
|
41
|
-
relations.push([
|
|
44
|
+
relations.push([
|
|
45
|
+
key,
|
|
46
|
+
relationReal,
|
|
47
|
+
relationReal.options?.include,
|
|
48
|
+
relationReal.options?.with,
|
|
49
|
+
false,
|
|
50
|
+
]);
|
|
42
51
|
}
|
|
43
52
|
}
|
|
44
53
|
return relations;
|
package/src/main.ts
CHANGED
|
@@ -12,7 +12,13 @@ const SymbolTransactionConsistency = Symbol('SymbolTransactionConsistency');
|
|
|
12
12
|
export class Main extends BeanSimple implements IModuleMain {
|
|
13
13
|
async moduleLoading() {
|
|
14
14
|
// config
|
|
15
|
-
const _configDefault = await combineConfigDefault<ConfigDatabase>(
|
|
15
|
+
const _configDefault = await combineConfigDefault<ConfigDatabase>(
|
|
16
|
+
this.app,
|
|
17
|
+
configDefault,
|
|
18
|
+
configDev,
|
|
19
|
+
configProd,
|
|
20
|
+
configTest,
|
|
21
|
+
);
|
|
16
22
|
this.app.config.database = deepExtend({}, _configDefault, this.app.config.database);
|
|
17
23
|
}
|
|
18
24
|
|
|
@@ -31,7 +37,9 @@ export class Main extends BeanSimple implements IModuleMain {
|
|
|
31
37
|
enumerable: false,
|
|
32
38
|
get(this: VonaContext) {
|
|
33
39
|
if (!this[SymbolTransactionConsistency]) {
|
|
34
|
-
this[SymbolTransactionConsistency] = this.app.bean._newBean(
|
|
40
|
+
this[SymbolTransactionConsistency] = this.app.bean._newBean(
|
|
41
|
+
ServiceTransactionConsistency,
|
|
42
|
+
);
|
|
35
43
|
}
|
|
36
44
|
return this[SymbolTransactionConsistency];
|
|
37
45
|
},
|