vona-module-a-orm 5.0.47 → 5.0.49
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.
|
@@ -29,8 +29,8 @@ export default async function (options: IMetadataCustomGenerateOptions): Promise
|
|
|
29
29
|
get<T extends IModelGetOptions<${entityName},${className}>>(where: TypeModelWhere<${entityName}>, options?: T): Promise<TypeModelRelationResult<${entityName}, ${className}, T> | undefined>;
|
|
30
30
|
mget<T extends IModelGetOptions<${entityName},${className}>>(ids: TableIdentity[], options?: T): Promise<TypeModelRelationResult<${entityName}, ${className}, T>[]>;
|
|
31
31
|
select<T extends IModelSelectParams<${entityName},${className},ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelRelationResult<${entityName}, ${className}, T>[]>;
|
|
32
|
-
insert<T extends IModelInsertOptions<${entityName},${className}>>(data?: TypeModelMutateRelationData<${entityName},${className}, T>, options?: T): Promise<
|
|
33
|
-
insertBulk<T extends IModelInsertOptions<${entityName},${className}>>(items: TypeModelMutateRelationData<${entityName},${className}, T>[], options?: T): Promise<
|
|
32
|
+
insert<T extends IModelInsertOptions<${entityName},${className}>>(data?: TypeModelMutateRelationData<${entityName},${className}, T>, options?: T): Promise<TypeModelMutateRelationData<${entityName},${className}, T, true>>;
|
|
33
|
+
insertBulk<T extends IModelInsertOptions<${entityName},${className}>>(items: TypeModelMutateRelationData<${entityName},${className}, T>[], options?: T): Promise<TypeModelMutateRelationData<${entityName},${className}, T, true>[]>;
|
|
34
34
|
update<T extends IModelUpdateOptions<${entityName},${className}>>(data: TypeModelMutateRelationData<${entityName},${className}, T>, options?: T): Promise<TypeModelMutateRelationData<${entityName},${className}, T>>;
|
|
35
35
|
updateBulk<T extends IModelUpdateOptions<${entityName},${className}>>(items: TypeModelMutateRelationData<${entityName},${className}, T>[], options?: T): Promise<TypeModelMutateRelationData<${entityName},${className}, T>[]>;
|
|
36
36
|
delete<T extends IModelDeleteOptions<${entityName},${className}>>(where?: TypeModelWhere<${entityName}>, options?: T): Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -2364,7 +2364,12 @@ let ServiceRelations = (_dec$a = Service(), _dec2$a = BeanInfo({
|
|
|
2364
2364
|
[key]: idsFrom
|
|
2365
2365
|
}
|
|
2366
2366
|
});
|
|
2367
|
-
|
|
2367
|
+
let items;
|
|
2368
|
+
if (idsFrom.length === 0) {
|
|
2369
|
+
items = [];
|
|
2370
|
+
} else {
|
|
2371
|
+
items = await modelTarget.select(options2, methodOptionsReal);
|
|
2372
|
+
}
|
|
2368
2373
|
for (const entity of entities) {
|
|
2369
2374
|
entity[relationName] = items.find(item => {
|
|
2370
2375
|
if (item[key] === cast(entity).id) {
|
|
@@ -2438,11 +2443,16 @@ let ServiceRelations = (_dec$a = Service(), _dec2$a = BeanInfo({
|
|
|
2438
2443
|
} else if (type === 'belongsToMany') {
|
|
2439
2444
|
const modelTargetMiddle = this.__getModelTarget(modelMiddle, options?.meta?.middle);
|
|
2440
2445
|
const idsFrom = entities.map(item => cast(item).id).filter(id => !isNil(id));
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
+
let itemsMiddle;
|
|
2447
|
+
if (idsFrom.length === 0) {
|
|
2448
|
+
itemsMiddle = [];
|
|
2449
|
+
} else {
|
|
2450
|
+
itemsMiddle = await modelTargetMiddle.select({
|
|
2451
|
+
where: {
|
|
2452
|
+
[keyFrom]: idsFrom
|
|
2453
|
+
}
|
|
2454
|
+
}, methodOptionsReal);
|
|
2455
|
+
}
|
|
2446
2456
|
if (optionsReal.groups) {
|
|
2447
2457
|
for (const entity of entities) {
|
|
2448
2458
|
const idsTo = itemsMiddle.filter(item => item[keyFrom] === cast(entity).id).map(item => item[keyTo]);
|
|
@@ -2577,12 +2587,17 @@ let ServiceRelations = (_dec$a = Service(), _dec2$a = BeanInfo({
|
|
|
2577
2587
|
const entity = entities[index];
|
|
2578
2588
|
if (entity[relationName] && entity[relationName].length > 0) {
|
|
2579
2589
|
const idsTo = entity[relationName].map(item => item.id);
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2590
|
+
let itemsMiddle;
|
|
2591
|
+
if (idsTo.length === 0) {
|
|
2592
|
+
itemsMiddle = [];
|
|
2593
|
+
} else {
|
|
2594
|
+
itemsMiddle = await cast(modelTargetMiddle).__select_raw(undefined, {
|
|
2595
|
+
where: {
|
|
2596
|
+
[keyFrom]: cast(entity).id,
|
|
2597
|
+
[keyTo]: idsTo
|
|
2598
|
+
}
|
|
2599
|
+
}, methodOptionsReal);
|
|
2600
|
+
}
|
|
2586
2601
|
for (const child of entity[relationName]) {
|
|
2587
2602
|
const itemMiddle = itemsMiddle.find(item => item[keyTo] === child.id);
|
|
2588
2603
|
if (!itemMiddle) {
|
|
@@ -2835,6 +2850,7 @@ class BeanModelCache extends BeanModelCrud {
|
|
|
2835
2850
|
return result;
|
|
2836
2851
|
}
|
|
2837
2852
|
async mget(ids, options) {
|
|
2853
|
+
if (ids.length === 0) return [];
|
|
2838
2854
|
const items = await this.__mget_raw(undefined, ids, options);
|
|
2839
2855
|
return await this.relations.handleRelationsMany(items, options, options);
|
|
2840
2856
|
}
|
|
@@ -3175,7 +3191,7 @@ class BeanModelCache extends BeanModelCrud {
|
|
|
3175
3191
|
const modelTarget = this.newInstanceTarget(modelClear);
|
|
3176
3192
|
const modelsClearedByFn = modelTarget.options.cache?.modelsClearedByFn;
|
|
3177
3193
|
if (modelsClearedByFn) {
|
|
3178
|
-
await modelsClearedByFn(this.ctx, modelTarget);
|
|
3194
|
+
await modelsClearedByFn(this.ctx, modelTarget, this);
|
|
3179
3195
|
} else {
|
|
3180
3196
|
await modelTarget.cacheQueryClear();
|
|
3181
3197
|
}
|
|
@@ -12,7 +12,7 @@ export interface IModelClassRecord {
|
|
|
12
12
|
}
|
|
13
13
|
export type TypeDynamicTableName = (ctx: VonaContext, defaultTable: keyof ITableRecord, modelInstance: any) => string;
|
|
14
14
|
export type TypeDynamicClientName = (ctx: VonaContext, modelInstance: any) => keyof IDatabaseClientRecord;
|
|
15
|
-
export type TypeModelsClearedByFn = (ctx: VonaContext,
|
|
15
|
+
export type TypeModelsClearedByFn = (ctx: VonaContext, modelTarget: any, modelSource: any) => Promise<void>;
|
|
16
16
|
export type TypeSoftDeletionPruneHandler = (ctx: VonaContext, modelInstance: any, options: ISoftDeletionPruneHandlerOptions) => Promise<void>;
|
|
17
17
|
export interface ISoftDeletionPruneHandlerOptions {
|
|
18
18
|
expired: number;
|
|
@@ -12,18 +12,18 @@ export type TypeModelMutateParamsRelationOptions<Relation> = boolean | (IModelRe
|
|
|
12
12
|
include?: TypeModelMutateParamsInclude<TypeUtilGetRelationModel<Relation>>;
|
|
13
13
|
with?: Record<string, unknown>;
|
|
14
14
|
});
|
|
15
|
-
export type TypeModelMutateRelationResultMergeInclude<TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined | unknown> = {
|
|
16
|
-
[RelationName in (keyof TModelOptions['relations'])]: TInclude extends {} ? TInclude[RelationName] extends {} | boolean ? TypeModelMutateRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName]> : TypeModelMutateRelationResultMergeAutoload<TModelOptions['relations'][RelationName]> : TypeModelMutateRelationResultMergeAutoload<TModelOptions['relations'][RelationName]>;
|
|
15
|
+
export type TypeModelMutateRelationResultMergeInclude<TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined | unknown, TForInsertResult extends boolean | undefined = undefined> = {
|
|
16
|
+
[RelationName in (keyof TModelOptions['relations'])]: TInclude extends {} ? TInclude[RelationName] extends {} | boolean ? TypeModelMutateRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName], TForInsertResult> : TypeModelMutateRelationResultMergeAutoload<TModelOptions['relations'][RelationName], TForInsertResult> : TypeModelMutateRelationResultMergeAutoload<TModelOptions['relations'][RelationName], TForInsertResult>;
|
|
17
17
|
};
|
|
18
|
-
export type TypeModelMutateRelationResultMergeAutoload<Relation> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilMutateGetRelationEntityByType<Relation, undefined> : never;
|
|
19
|
-
export type TypeModelMutateRelationResultMergeIncludeWrapper<Relation, IncludeWrapper> = IncludeWrapper extends false ? never : IncludeWrapper extends true ? TypeUtilMutateGetRelationEntityByType<Relation, undefined> : IncludeWrapper extends {} ? TypeUtilMutateGetRelationEntityByType<Relation, IncludeWrapper> : never;
|
|
20
|
-
export type TypeUtilMutateGetRelationEntityByType<Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilMutateGetEntityByType<TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper>;
|
|
21
|
-
export type TypeUtilMutateGetEntityByType<TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined | unknown> = TYPE extends 'belongsTo' ? never : TYPE extends 'belongsToMany' ? Array<{
|
|
18
|
+
export type TypeModelMutateRelationResultMergeAutoload<Relation, TForInsertResult extends boolean | undefined = undefined> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilMutateGetRelationEntityByType<Relation, undefined, TForInsertResult> : never;
|
|
19
|
+
export type TypeModelMutateRelationResultMergeIncludeWrapper<Relation, IncludeWrapper, TForInsertResult extends boolean | undefined = undefined> = IncludeWrapper extends false ? never : IncludeWrapper extends true ? TypeUtilMutateGetRelationEntityByType<Relation, undefined, TForInsertResult> : IncludeWrapper extends {} ? TypeUtilMutateGetRelationEntityByType<Relation, IncludeWrapper, TForInsertResult> : never;
|
|
20
|
+
export type TypeUtilMutateGetRelationEntityByType<Relation, IncludeWrapper extends {} | undefined | unknown, TForInsertResult extends boolean | undefined = undefined> = TypeUtilMutateGetEntityByType<TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper, TForInsertResult>;
|
|
21
|
+
export type TypeUtilMutateGetEntityByType<TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined | unknown, TForInsertResult extends boolean | undefined = undefined> = TYPE extends 'belongsTo' ? never : TYPE extends 'belongsToMany' ? Array<{
|
|
22
22
|
id: TableIdentity;
|
|
23
23
|
deleted?: boolean;
|
|
24
|
-
}> | undefined : TYPE extends 'hasMany' ? Array<TypeModelMutateRelationData<TRecord, TModel, IncludeWrapper>> | undefined : TypeModelMutateRelationData<TRecord, TModel, IncludeWrapper> | undefined;
|
|
25
|
-
export type TypeModelMutateRelationResultMergeWith<TWith extends {} | undefined | unknown> = TWith extends {} ? {
|
|
26
|
-
[RelationName in (keyof TWith)]: TypeModelMutateRelationResultMergeWithRelation<TWith[RelationName]>;
|
|
24
|
+
}> | undefined : TYPE extends 'hasMany' ? Array<TypeModelMutateRelationData<TRecord, TModel, IncludeWrapper, TForInsertResult>> | undefined : TypeModelMutateRelationData<TRecord, TModel, IncludeWrapper, TForInsertResult> | undefined;
|
|
25
|
+
export type TypeModelMutateRelationResultMergeWith<TWith extends {} | undefined | unknown, TForInsertResult extends boolean | undefined = undefined> = TWith extends {} ? {
|
|
26
|
+
[RelationName in (keyof TWith)]: TypeModelMutateRelationResultMergeWithRelation<TWith[RelationName], TForInsertResult>;
|
|
27
27
|
} : {};
|
|
28
|
-
export type TypeModelMutateRelationResultMergeWithRelation<WithRelation> = WithRelation extends false ? never : WithRelation extends true ? never : WithRelation extends {} ? TypeUtilMutateGetRelationEntityByType<WithRelation, TypeUtilGetRelationOptions<WithRelation
|
|
29
|
-
export type TypeModelMutateRelationData<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation> = Partial<TRecord> & (TModel extends BeanModelMeta ? (Partial<OmitNever<TypeModelMutateRelationResultMergeInclude<TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation
|
|
28
|
+
export type TypeModelMutateRelationResultMergeWithRelation<WithRelation, TForInsertResult extends boolean | undefined = undefined> = WithRelation extends false ? never : WithRelation extends true ? never : WithRelation extends {} ? TypeUtilMutateGetRelationEntityByType<WithRelation, TypeUtilGetRelationOptions<WithRelation>, TForInsertResult> : never;
|
|
29
|
+
export type TypeModelMutateRelationData<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation, TForInsertResult extends boolean | undefined = undefined> = (TForInsertResult extends true ? TRecord : Partial<TRecord>) & (TModel extends BeanModelMeta ? (Partial<OmitNever<TypeModelMutateRelationResultMergeInclude<TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>, TForInsertResult>>> & Partial<OmitNever<TypeModelMutateRelationResultMergeWith<TypeUtilGetParamsWith<TOptionsRelation>, TForInsertResult>>>) : {});
|