vona-module-a-orm 5.0.41 → 5.0.42
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/dist/index.js +21 -3
- package/dist/lib/dto/dtoCreate.d.ts +1 -1
- package/dist/lib/dto/dtoGet.d.ts +1 -1
- package/dist/lib/dto/dtoGroup.d.ts +1 -1
- package/dist/lib/dto/dtoMutate.d.ts +2 -2
- package/dist/lib/dto/dtoUpdate.d.ts +1 -1
- package/dist/lib/relationsDynamic.d.ts +4 -4
- package/dist/types/dto/dtoMutate.d.ts +40 -4
- package/dist/types/modelAggr.d.ts +3 -2
- package/dist/types/relations.d.ts +15 -11
- package/dist/types/relationsAggr.d.ts +1 -1
- package/dist/types/relationsDefDynamic.d.ts +4 -4
- package/dist/types/relationsGroup.d.ts +1 -1
- package/dist/types/relationsMutate.d.ts +9 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { Schedule } from 'vona-module-a-schedule';
|
|
|
16
16
|
import { configAllWithIgnoreNull, configAll, configRedisWithIgnoreNull, configRedis } from 'vona-module-a-summer';
|
|
17
17
|
import { ServiceDatabaseAsyncLocalStorage as ServiceDatabaseAsyncLocalStorage$1, ServiceTransactionConsistency as ServiceTransactionConsistency_ } from 'vona-module-a-orm';
|
|
18
18
|
import { mutate } from 'mutate-on-copy';
|
|
19
|
+
import z from 'zod';
|
|
19
20
|
|
|
20
21
|
var _dec$u, _dec2$u, _class$u;
|
|
21
22
|
let AopMethodTransaction = (_dec$u = AopMethod(), _dec2$u = BeanInfo({
|
|
@@ -1269,6 +1270,8 @@ const SymbolKeyEntity = Symbol('$entity');
|
|
|
1269
1270
|
const SymbolKeyEntityMeta = Symbol('$entityMeta');
|
|
1270
1271
|
const SymbolKeyModelOptions = Symbol('$modelOptions');
|
|
1271
1272
|
|
|
1273
|
+
// not use Groups extends string |string[]
|
|
1274
|
+
|
|
1272
1275
|
const SymbolModelDb = Symbol('SymbolModelDb');
|
|
1273
1276
|
const SymbolModelTable = Symbol('SymbolModelTable');
|
|
1274
1277
|
class BeanModelMeta extends BeanBase {
|
|
@@ -2401,7 +2404,11 @@ let ServiceRelations = (_dec$a = Service(), _dec2$a = BeanInfo({
|
|
|
2401
2404
|
});
|
|
2402
2405
|
const items = await modelTarget.group(options2, methodOptionsReal);
|
|
2403
2406
|
for (const entity of entities) {
|
|
2404
|
-
|
|
2407
|
+
const item = items.find(item => item[key] === cast(entity).id);
|
|
2408
|
+
if (item) {
|
|
2409
|
+
delete item[key];
|
|
2410
|
+
}
|
|
2411
|
+
entity[relationName] = item;
|
|
2405
2412
|
}
|
|
2406
2413
|
} else {
|
|
2407
2414
|
const [columns, withKey] = this.__prepareColumnsAndKey(optionsReal.columns, key);
|
|
@@ -3716,8 +3723,17 @@ function _DtoGet_relation_handle(entityClass, relation, mutateTypeTopLevel) {
|
|
|
3716
3723
|
});
|
|
3717
3724
|
const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel);
|
|
3718
3725
|
if (mutateTypeTopLevel) {
|
|
3726
|
+
if (type === 'belongsTo') {
|
|
3727
|
+
// donot mutate
|
|
3728
|
+
return;
|
|
3729
|
+
}
|
|
3719
3730
|
let schema;
|
|
3720
|
-
if (type === '
|
|
3731
|
+
if (type === 'belongsToMany') {
|
|
3732
|
+
schema = v.array(z.object({
|
|
3733
|
+
id: v.tableIdentity()(),
|
|
3734
|
+
deleted: z.boolean().optional()
|
|
3735
|
+
}));
|
|
3736
|
+
} else if (type === 'hasOne') {
|
|
3721
3737
|
schema = v.lazy(v.optional(), schemaLazy);
|
|
3722
3738
|
} else {
|
|
3723
3739
|
schema = v.array(v.lazy(schemaLazy));
|
|
@@ -3873,9 +3889,11 @@ function DtoCreate(modelLike, params) {
|
|
|
3873
3889
|
}
|
|
3874
3890
|
|
|
3875
3891
|
function DtoUpdate(modelLike, params) {
|
|
3876
|
-
return
|
|
3892
|
+
return _DtoMutate_raw(modelLike, params, 'update', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'], true);
|
|
3877
3893
|
}
|
|
3878
3894
|
|
|
3895
|
+
// not use Partial/$Class.partial, for form render at frontend
|
|
3896
|
+
|
|
3879
3897
|
const $Dto = {
|
|
3880
3898
|
create: DtoCreate,
|
|
3881
3899
|
update: DtoUpdate,
|
|
@@ -2,4 +2,4 @@ import type { Constructable } from 'vona';
|
|
|
2
2
|
import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
|
|
3
3
|
import type { IDtoMutateParams, TypeDtoMutateResult } from '../../types/dto/dtoMutate.ts';
|
|
4
4
|
import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
5
|
-
export declare function DtoCreate<
|
|
5
|
+
export declare function DtoCreate<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), T extends IDtoMutateParams<ModelLike> | undefined = undefined>(modelLike: ModelLike extends BeanModelMeta ? ((() => Constructable<ModelLike>) | Constructable<ModelLike>) : ModelLike, params?: T): Constructable<TypeDtoMutateResult<ModelLike, T, 'create', 'id' | 'iid' | 'deleted' | 'createdAt' | 'updatedAt', true>>;
|
package/dist/lib/dto/dtoGet.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ import type { IDtoGetParams, TypeDtoGetResult } from '../../types/dto/dtoGet.ts'
|
|
|
4
4
|
import type { TypeDtoMutateType } from '../../types/dto/dtoMutate.ts';
|
|
5
5
|
import type { IModelRelationIncludeWrapper } from '../../types/model.ts';
|
|
6
6
|
import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
7
|
-
export declare function DtoGet<
|
|
7
|
+
export declare function DtoGet<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), T extends IDtoGetParams<ModelLike> | undefined = undefined>(modelLike: ModelLike extends BeanModelMeta ? ((() => Constructable<ModelLike>) | Constructable<ModelLike>) : ModelLike, params?: T): Constructable<TypeDtoGetResult<ModelLike, T>>;
|
|
8
8
|
export declare function _DtoGet_relations<TRecord extends {}, TModel extends BeanModelMeta>(modelClass: Constructable<TModel>, entityClass: Constructable<TRecord>, includeWrapper?: IModelRelationIncludeWrapper, mutateTypeTopLevel?: TypeDtoMutateType): void;
|
|
@@ -5,4 +5,4 @@ import type { TypeModelSelectAggrParamsAggrs } from '../../types/modelAggr.ts';
|
|
|
5
5
|
import type { TypeModelColumnsStrict } from '../../types/modelWhere.ts';
|
|
6
6
|
import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
7
7
|
import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../../types/relations.ts';
|
|
8
|
-
export declare function DtoGroup<Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>, Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]
|
|
8
|
+
export declare function DtoGroup<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]>, Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined, Columns extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined>(modelLike: ModelLike extends BeanModelMeta ? ((() => Constructable<ModelLike>) | Constructable<ModelLike>) : ModelLike, groups: Groups, aggrs?: Aggrs, columns?: Columns): Constructable<TypeDtoGroupResult<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], Aggrs, Groups, Columns>>;
|
|
@@ -4,5 +4,5 @@ import type { IDtoMutateParams, TypeDtoMutateResult, TypeDtoMutateType } from '.
|
|
|
4
4
|
import type { TypeModelColumnsStrict } from '../../types/modelWhere.ts';
|
|
5
5
|
import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
6
6
|
import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../../types/relations.ts';
|
|
7
|
-
export declare function DtoMutate<
|
|
8
|
-
export declare function _DtoMutate_raw<
|
|
7
|
+
export declare function DtoMutate<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), T extends IDtoMutateParams<ModelLike> | undefined = undefined>(modelLike: ModelLike extends BeanModelMeta ? ((() => Constructable<ModelLike>) | Constructable<ModelLike>) : ModelLike, params?: T): Constructable<TypeDtoMutateResult<ModelLike, T, 'mutate', undefined, true>>;
|
|
8
|
+
export declare function _DtoMutate_raw<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), T extends IDtoMutateParams<ModelLike> | undefined = undefined, ColumnsOmitDefault extends TypeModelColumnsStrict<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity]> | undefined = undefined>(modelLike: ModelLike extends BeanModelMeta ? ((() => Constructable<ModelLike>) | Constructable<ModelLike>) : ModelLike, params?: T, mutateTypeTopLevel?: TypeDtoMutateType, columnsOmitDefault?: ColumnsOmitDefault, topLevel?: boolean): any;
|
|
@@ -2,4 +2,4 @@ import type { Constructable } from 'vona';
|
|
|
2
2
|
import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
|
|
3
3
|
import type { IDtoMutateParams, TypeDtoMutateResult } from '../../types/dto/dtoMutate.ts';
|
|
4
4
|
import type { IModelClassRecord } from '../../types/onion/model.ts';
|
|
5
|
-
export declare function DtoUpdate<
|
|
5
|
+
export declare function DtoUpdate<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), T extends IDtoMutateParams<ModelLike> | undefined = undefined>(modelLike: ModelLike extends BeanModelMeta ? ((() => Constructable<ModelLike>) | Constructable<ModelLike>) : ModelLike, params?: T): Constructable<TypeDtoMutateResult<ModelLike, T, 'update', 'id' | 'iid' | 'deleted' | 'createdAt' | 'updatedAt', true>>;
|
|
@@ -2,10 +2,10 @@ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
|
2
2
|
import type { IModelClassRecord } from '../types/onion/model.ts';
|
|
3
3
|
import type { TypeModelClassLike, TypeModelOfModelLike, TypeModelsClassLikeGeneral, TypeSymbolKeyEntity } from '../types/relations.ts';
|
|
4
4
|
import type { IModelRelationBelongsToDynamic, IModelRelationBelongsToManyDynamic, IModelRelationHasManyDynamic, IModelRelationHasOneDynamic, IModelRelationOptionsManyDynamic, IModelRelationOptionsOneDynamic } from '../types/relationsDefDynamic.ts';
|
|
5
|
-
declare function hasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL
|
|
6
|
-
declare function belongsTo<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL
|
|
7
|
-
declare function hasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group
|
|
8
|
-
declare function belongsToMany<MODELMiddle extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group
|
|
5
|
+
declare function hasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined>(classModel: TypeModelClassLike<MODEL>, key: keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], options?: OPTIONS): IModelRelationHasOneDynamic<MODEL, OPTIONS>;
|
|
6
|
+
declare function belongsTo<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined>(_classModelSelf: TypeModelClassLike<MODELSelf>, classModel: TypeModelClassLike<MODEL>, key: keyof TypeModelOfModelLike<MODELSelf>[TypeSymbolKeyEntity], options?: OPTIONS): IModelRelationBelongsToDynamic<MODELSelf, MODEL, OPTIONS>;
|
|
7
|
+
declare function hasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> | undefined = undefined, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Group extends boolean | undefined = undefined>(classModel: TypeModelClassLike<MODEL>, key: keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], options?: OPTIONS, _modelJoins?: ModelJoins, _group?: Group): IModelRelationHasManyDynamic<MODEL, OPTIONS, ModelJoins, Group>;
|
|
8
|
+
declare function belongsToMany<MODELMiddle extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> | undefined = undefined, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Group extends boolean | undefined = undefined>(classModelMiddle: TypeModelClassLike<MODELMiddle>, classModel: TypeModelClassLike<MODEL>, keyFrom: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity], keyTo: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity], options?: OPTIONS, _modelJoins?: ModelJoins, _group?: Group): IModelRelationBelongsToManyDynamic<MODELMiddle, MODEL, OPTIONS, ModelJoins, Group>;
|
|
9
9
|
export declare const $relationDynamic: {
|
|
10
10
|
hasOne: typeof hasOne;
|
|
11
11
|
belongsTo: typeof belongsTo;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { OmitNever, TypeOmitStringUnion } from 'vona';
|
|
1
2
|
import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
|
|
2
3
|
import type { IModelRelationIncludeWrapper } from '../model.ts';
|
|
3
4
|
import type { TypeModelColumnsStrict } from '../modelWhere.ts';
|
|
4
|
-
import type { IModelClassRecord } from '../onion/model.ts';
|
|
5
|
-
import type { TypeModelOfModelLike, TypeSymbolKeyEntity } from '../relations.ts';
|
|
6
|
-
import type {
|
|
5
|
+
import type { IDecoratorModelOptions, IModelClassRecord } from '../onion/model.ts';
|
|
6
|
+
import type { TypeModelOfModelLike, TypeSymbolKeyEntity, TypeUtilEntityOmit, TypeUtilEntityPartial, TypeUtilEntitySelector, TypeUtilGetColumnsFromRelationAndIncludeWrapper, TypeUtilGetModelOptions, TypeUtilGetParamsColumns, TypeUtilGetParamsInlcude, TypeUtilGetParamsWith, TypeUtilGetRelationEntity, TypeUtilGetRelationModel, TypeUtilGetRelationOptions, TypeUtilGetRelationOptionsAutoload, TypeUtilGetRelationType, TypeUtilPrepareColumns } from '../relations.ts';
|
|
7
|
+
import type { TableIdentity } from '../tableIdentity.ts';
|
|
7
8
|
export type TypeDtoMutateType = 'create' | 'update' | 'mutate';
|
|
8
9
|
export type IDtoMutateParams<ModelLike extends BeanModelMeta | (keyof IModelClassRecord)> = IBuildDtoMutateParams<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], TypeModelOfModelLike<ModelLike>>;
|
|
9
10
|
export interface IBuildDtoMutateParams<TRecord, Model extends BeanModelMeta> extends IModelRelationIncludeWrapper<Model>, IBuildDtoMutateParamsBasic<TRecord> {
|
|
@@ -11,4 +12,39 @@ export interface IBuildDtoMutateParams<TRecord, Model extends BeanModelMeta> ext
|
|
|
11
12
|
export interface IBuildDtoMutateParamsBasic<TRecord> {
|
|
12
13
|
columns?: TypeModelColumnsStrict<TRecord>;
|
|
13
14
|
}
|
|
14
|
-
export type TypeDtoMutateResult<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), TOptionsRelation> =
|
|
15
|
+
export type TypeDtoMutateResult<ModelLike extends BeanModelMeta | (keyof IModelClassRecord), TOptionsRelation, TMutateTypeTopLevel extends TypeDtoMutateType, TColumnsOmitDefault extends string | string[] | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = TypeDtoMutateRelationResult<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], TypeModelOfModelLike<ModelLike>, TOptionsRelation, TMutateTypeTopLevel, TColumnsOmitDefault, TTopLevel>;
|
|
16
|
+
export type TypeDtoMutateRelationResult<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation, TMutateTypeTopLevel extends TypeDtoMutateType, TColumnsOmitDefault extends string | string[] | undefined = undefined, TTopLevel extends boolean | undefined = undefined, TColumns = undefined> = TypeDtoMutateRelationResultEntity<TRecord, TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>, TMutateTypeTopLevel, TColumnsOmitDefault, TTopLevel> & (TModel extends BeanModelMeta ? (OmitNever<TypeDtoMutateRelationResultMergeInclude<TMutateTypeTopLevel, TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>>> & OmitNever<TypeDtoMutateModelRelationResultMergeWith<TMutateTypeTopLevel, TypeUtilGetParamsWith<TOptionsRelation>>>) : {});
|
|
17
|
+
type TypeDtoMutateRelationResultMergeInclude<TMutateTypeTopLevel extends TypeDtoMutateType, TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined | unknown> = {
|
|
18
|
+
[RelationName in (keyof TModelOptions['relations'])]: TInclude extends {} ? TInclude[RelationName] extends {} | boolean ? TypeDtoMutateRelationResultMergeIncludeWrapper<TMutateTypeTopLevel, TModelOptions['relations'][RelationName], TInclude[RelationName]> : TypeDtoMutateRelationResultMergeAutoload<TMutateTypeTopLevel, TModelOptions['relations'][RelationName]> : TypeDtoMutateRelationResultMergeAutoload<TMutateTypeTopLevel, TModelOptions['relations'][RelationName]>;
|
|
19
|
+
};
|
|
20
|
+
type TypeDtoMutateModelRelationResultMergeWith<TMutateTypeTopLevel extends TypeDtoMutateType, TWith extends {} | undefined | unknown> = TWith extends {} ? {
|
|
21
|
+
[RelationName in (keyof TWith)]: TypeDtoMutateRelationResultMergeWithRelation<TMutateTypeTopLevel, TWith[RelationName]>;
|
|
22
|
+
} : {};
|
|
23
|
+
type TypeDtoMutateRelationResultMergeIncludeWrapper<TMutateTypeTopLevel extends TypeDtoMutateType, Relation, IncludeWrapper> = IncludeWrapper extends false ? never : IncludeWrapper extends true ? TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel, Relation, undefined> : IncludeWrapper extends {} ? TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel, Relation, IncludeWrapper> : never;
|
|
24
|
+
type TypeDtoMutateRelationResultMergeAutoload<TMutateTypeTopLevel extends TypeDtoMutateType, Relation> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel, Relation, undefined> : never;
|
|
25
|
+
type TypeDtoMutateRelationResultMergeWithRelation<TMutateTypeTopLevel extends TypeDtoMutateType, WithRelation> = WithRelation extends false ? never : WithRelation extends true ? never : WithRelation extends {} ? TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel, WithRelation, TypeUtilGetRelationOptions<WithRelation>> : never;
|
|
26
|
+
type TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel extends TypeDtoMutateType, Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilGetDtoMutateEntityByType<TMutateTypeTopLevel, TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper, TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>>;
|
|
27
|
+
type TypeUtilGetDtoMutateEntityByType<TMutateTypeTopLevel extends TypeDtoMutateType, TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined | unknown, Columns> = TYPE extends 'belongsTo' ? never : TYPE extends 'belongsToMany' ? Array<{
|
|
28
|
+
id: TableIdentity;
|
|
29
|
+
deleted?: boolean;
|
|
30
|
+
}> | undefined : TYPE extends 'hasMany' ? Array<TypeDtoMutateRelationResult<TRecord, TModel, IncludeWrapper, TMutateTypeTopLevel, undefined, false, Columns>> | undefined : TypeDtoMutateRelationResult<TRecord, TModel, IncludeWrapper, TMutateTypeTopLevel, undefined, false, Columns> | undefined;
|
|
31
|
+
type TypeDtoMutateRelationResultEntity<TRecord, Columns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = TypeDtoMutateRelationResultPatch<TypeDtoMutateRelationResultEntityInner<TRecord, Columns, TMutateTypeTopLevel, TColumnsOmitDefault, TTopLevel>, TMutateTypeTopLevel, TTopLevel>;
|
|
32
|
+
type TypeDtoMutateRelationResultPatch<TRecordResult, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = TTopLevel extends false ? TMutateTypeTopLevel extends 'update' | 'mutate' ? TypeUtilEntityPartial<TRecordResult, 'id' | 'deleted'> : TRecordResult : TRecordResult;
|
|
33
|
+
type TypeDtoMutateRelationResultEntityInner<TRecord, Columns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = [
|
|
34
|
+
Columns
|
|
35
|
+
] extends [string | string[]] ? TypeDtoMutateRelationResultEntityFromColumns<TRecord, Columns, TMutateTypeTopLevel, TTopLevel> : TypeDtoMutateRelationResultEntityFromColumnsOmitDefault<TRecord, TMutateTypeTopLevel, TColumnsOmitDefault>;
|
|
36
|
+
type TypeDtoMutateRelationResultEntityFromColumns<TRecord, Columns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = TypeUtilEntitySelector<TRecord, TypeUtilPrepareColumns<TypeDtoMutateRelationResultPrepareColumns<TypeUtilPrepareColumns<Columns>, TMutateTypeTopLevel, TTopLevel>>>;
|
|
37
|
+
type TypeDtoMutateRelationResultEntityFromColumnsOmitDefault<TRecord, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined> = TypeUtilEntityOmit<TRecord, TypeUtilPrepareColumns<TypeDtoMutateRelationResultPrepareColumnsOmitDefault<TMutateTypeTopLevel, TColumnsOmitDefault>>>;
|
|
38
|
+
type TypeDtoMutateRelationResultPrepareColumns<TColumns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = TTopLevel extends true ? TColumns : TMutateTypeTopLevel extends 'create' ? TypeOmitStringUnion<TColumns, 'deleted' | 'id'> : (TColumns | 'deleted' | 'id');
|
|
39
|
+
type TypeDtoMutateRelationResultPrepareColumnsOmitDefault<TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined> = TColumnsOmitDefault extends string | string[] ? TColumnsOmitDefault : TMutateTypeTopLevel extends 'create' ? [
|
|
40
|
+
'id',
|
|
41
|
+
'iid',
|
|
42
|
+
'deleted',
|
|
43
|
+
'createdAt',
|
|
44
|
+
'updatedAt'
|
|
45
|
+
] : [
|
|
46
|
+
'iid',
|
|
47
|
+
'createdAt',
|
|
48
|
+
'updatedAt'
|
|
49
|
+
];
|
|
50
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OmitNever } from 'vona';
|
|
1
2
|
import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
2
3
|
import type { IModelSelectParamsJoin } from './model.ts';
|
|
3
4
|
import type { TypeModelColumns, TypeModelWhere } from './modelWhere.ts';
|
|
@@ -12,9 +13,9 @@ export interface TypeModelSelectAggrParamsAggrs<TRecord> {
|
|
|
12
13
|
min?: TypeEntityTableColumnNamesForAggrs<TRecord> | Array<TypeEntityTableColumnNamesForAggrs<TRecord>>;
|
|
13
14
|
}
|
|
14
15
|
export type TypeEntityTableColumnNamesForAggrs<Entity> = keyof TypeEntityTableColumnsForAggrs<Entity>;
|
|
15
|
-
export type TypeEntityTableColumnsForAggrs<Entity> = Omit<{
|
|
16
|
+
export type TypeEntityTableColumnsForAggrs<Entity> = OmitNever<Omit<{
|
|
16
17
|
[K in keyof Entity as Entity[K] extends number | undefined ? K : never]: Entity[K];
|
|
17
|
-
}, 'id' | 'iid'
|
|
18
|
+
}, 'id' | 'iid'>>;
|
|
18
19
|
export interface IBuildModelSelectAggrParams<TRecord, Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> extends IBuildModelSelectAggrParamsBasic<TRecord, Model, TableNames, ColumnNames, Columns> {
|
|
19
20
|
}
|
|
20
21
|
export interface IBuildModelSelectAggrParamsBasic<TRecord, _Model extends BeanModelMeta | undefined = undefined, TableNames = undefined, ColumnNames = keyof TRecord, Columns extends {} | undefined = undefined> {
|
|
@@ -43,7 +43,7 @@ export type TypeUtilGetRelationModelOptions<Relation> = TypeUtilGetModelOptions<
|
|
|
43
43
|
export type TypeUtilGetRelationEntity<Relation> = TypeUtilGetModelEntity<TypeUtilGetRelationModel<Relation>>;
|
|
44
44
|
export type TypeUtilGetRelationEntityMeta<Relation> = TypeUtilGetModelEntityMeta<TypeUtilGetRelationModel<Relation>>;
|
|
45
45
|
export type TypeUtilGetRelationOptions<Relation> = Relation extends {
|
|
46
|
-
options?: infer OPTIONS
|
|
46
|
+
options?: infer OPTIONS;
|
|
47
47
|
} ? OPTIONS : undefined;
|
|
48
48
|
export type TypeUtilGetRelationOptionsAutoload<Relation> = Relation extends {
|
|
49
49
|
options?: {
|
|
@@ -69,32 +69,36 @@ export type TypeUtilGetModelOptions<Model extends BeanModelMeta | undefined> = M
|
|
|
69
69
|
export type TypeUtilGetModelEntity<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyEntity] : undefined;
|
|
70
70
|
export type TypeUtilGetModelEntityMeta<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model[TypeSymbolKeyEntityMeta] : undefined;
|
|
71
71
|
export type TypeUtilGetModelOnionName<Model extends BeanModelMeta | undefined> = Model extends BeanModelMeta ? Model['$onionName'] : undefined;
|
|
72
|
-
export type TypeUtilGetRelationEntityByType<Relation, IncludeWrapper extends {} | undefined> = TypeUtilGetEntityByType<TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper, TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>>;
|
|
73
|
-
export type TypeUtilGetEntityByType<TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined, Columns, Aggrs, Groups> = TYPE extends 'hasMany' | 'belongsToMany' ? Groups extends string | string[] ? Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs, Groups>> : (Aggrs extends {} ? TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs> | undefined : Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns>>) : TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns> | undefined;
|
|
72
|
+
export type TypeUtilGetRelationEntityByType<Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilGetEntityByType<TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper, TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>>;
|
|
73
|
+
export type TypeUtilGetEntityByType<TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined | unknown, Columns, Aggrs, Groups> = TYPE extends 'hasMany' | 'belongsToMany' ? Groups extends string | string[] ? Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs, Groups>> : (Aggrs extends {} ? TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns, Aggrs> | undefined : Array<TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns>>) : TypeModelRelationResult<TRecord, TModel, IncludeWrapper, Columns> | undefined;
|
|
74
74
|
export type TypeUtilGetParamsAggrs<TParams> = TParams extends {
|
|
75
|
-
aggrs?: infer Aggrs
|
|
75
|
+
aggrs?: infer Aggrs;
|
|
76
76
|
} ? Aggrs : undefined;
|
|
77
77
|
export type TypeUtilGetParamsGroups<TParams> = TParams extends {
|
|
78
|
-
groups?: infer Groups
|
|
78
|
+
groups?: infer Groups;
|
|
79
79
|
} ? Groups : undefined;
|
|
80
80
|
export type TypeUtilGetParamsInlcude<TParams> = TParams extends {
|
|
81
|
-
include?: infer INCLUDE
|
|
81
|
+
include?: infer INCLUDE;
|
|
82
82
|
} ? INCLUDE : undefined;
|
|
83
83
|
export type TypeUtilGetParamsWith<TParams> = TParams extends {
|
|
84
|
-
with?: infer WITH
|
|
84
|
+
with?: infer WITH;
|
|
85
85
|
} ? WITH : undefined;
|
|
86
86
|
export type TypeUtilGetParamsColumns<TParams> = TParams extends {
|
|
87
87
|
columns?: infer COLUMNS;
|
|
88
88
|
} ? COLUMNS : undefined;
|
|
89
89
|
export type TypeUtilPrepareColumns<TColumns> = TColumns extends '*' | ['*'] ? undefined : TColumns extends string[] ? TColumns[number] : TColumns extends string ? TColumns : undefined;
|
|
90
90
|
export type TypeUtilEntitySelector<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Pick<TRecord, TColumns> : TRecord;
|
|
91
|
-
export type
|
|
91
|
+
export type TypeUtilEntityOmit<TRecord, TColumns> = [TColumns] extends [keyof TRecord] ? Omit<TRecord, TColumns> : TRecord;
|
|
92
|
+
export type TypeUtilEntityPartial<TRecord, TColumns> = [
|
|
93
|
+
TColumns
|
|
94
|
+
] extends [keyof TRecord] ? Partial<Pick<TRecord, TColumns>> & Omit<TRecord, TColumns> : TRecord;
|
|
95
|
+
export type TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilGetParamsColumns<IncludeWrapper> extends string | string[] ? TypeUtilGetParamsColumns<IncludeWrapper> : TypeUtilGetRelationOptionsColumns<Relation>;
|
|
92
96
|
export type TypeModelRelationResult<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation, TColumns = undefined, Aggrs = undefined, Groups = undefined> = Groups extends string | string[] ? TypeModelGroupRelationResultGroups<TRecord, Aggrs, Groups, TColumns> : Aggrs extends {} ? TypeModelAggrRelationResultAggrs<Aggrs> : TypeModelRelationResult_Normal<TRecord, TModel, TOptionsRelation, TColumns>;
|
|
93
97
|
export type TypeModelRelationResult_Normal<TRecord, TModel extends BeanModelMeta | undefined, TOptionsRelation, TColumns = undefined> = TypeUtilEntitySelector<TRecord, TypeUtilPrepareColumns<TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>>> & (TModel extends BeanModelMeta ? (OmitNever<TypeModelRelationResultMergeInclude<TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>>> & OmitNever<TypeModelRelationResultMergeWith<TypeUtilGetParamsWith<TOptionsRelation>>>) : {});
|
|
94
|
-
export type TypeModelRelationResultMergeInclude<TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined> = {
|
|
95
|
-
[RelationName in (keyof TModelOptions['relations'])]: TInclude[RelationName] extends {} | boolean ? TypeModelRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName]> : TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName]>;
|
|
98
|
+
export type TypeModelRelationResultMergeInclude<TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined | unknown> = {
|
|
99
|
+
[RelationName in (keyof TModelOptions['relations'])]: TInclude extends {} ? TInclude[RelationName] extends {} | boolean ? TypeModelRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName]> : TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName]> : TypeModelRelationResultMergeAutoload<TModelOptions['relations'][RelationName]>;
|
|
96
100
|
};
|
|
97
|
-
export type TypeModelRelationResultMergeWith<TWith extends {} | undefined> = TWith extends {} ? {
|
|
101
|
+
export type TypeModelRelationResultMergeWith<TWith extends {} | undefined | unknown> = TWith extends {} ? {
|
|
98
102
|
[RelationName in (keyof TWith)]: TypeModelRelationResultMergeWithRelation<TWith[RelationName]>;
|
|
99
103
|
} : {};
|
|
100
104
|
export type TypeModelRelationResultMergeAutoload<Relation> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilGetRelationEntityByType<Relation, undefined> : never;
|
|
@@ -10,7 +10,7 @@ export type TypeRecordAggrsValues<TRecord extends Record<string, any>> = TRecord
|
|
|
10
10
|
export type TypeRecordAggrsValuesToObject<AggrValues extends string> = {
|
|
11
11
|
[K in AggrValues]: BigNumber | undefined;
|
|
12
12
|
};
|
|
13
|
-
export type TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined> = TypeUtilGetRelationOptionsAggrs<Relation> extends {} ? TypeUtilGetParamsAggrs<IncludeWrapper> extends {} ? TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<TypeUtilGetRelationOptionsAggrs<Relation>, TypeUtilGetParamsAggrs<IncludeWrapper>> : TypeUtilGetRelationOptionsAggrs<Relation> : undefined;
|
|
13
|
+
export type TypeUtilGetAggrsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilGetRelationOptionsAggrs<Relation> extends {} ? TypeUtilGetParamsAggrs<IncludeWrapper> extends {} ? TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<TypeUtilGetRelationOptionsAggrs<Relation>, TypeUtilGetParamsAggrs<IncludeWrapper>> : TypeUtilGetRelationOptionsAggrs<Relation> : undefined;
|
|
14
14
|
export type TypeUtilGetAggrsFromRelationAndIncludeWrapper_Mixed<RelationAggrs extends {}, IncludeWrapperAggrs extends {}> = {
|
|
15
15
|
[K in keyof RelationAggrs]: K extends string ? K extends keyof IncludeWrapperAggrs ? IncludeWrapperAggrs[K] : RelationAggrs[K] : undefined;
|
|
16
16
|
};
|
|
@@ -8,25 +8,25 @@ import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGener
|
|
|
8
8
|
import type { IModelRelationOptionsMetaWrapper } from './relationsDef.ts';
|
|
9
9
|
import type { TypeModelSelectGroupParamsColumnNames } from './relationsGroup.ts';
|
|
10
10
|
import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
|
|
11
|
-
export interface IModelRelationHasOneDynamic<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> =
|
|
11
|
+
export interface IModelRelationHasOneDynamic<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined> {
|
|
12
12
|
type?: 'hasOne';
|
|
13
13
|
model?: TypeModelClassLike<MODEL>;
|
|
14
14
|
key?: keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity];
|
|
15
15
|
options?: OPTIONS;
|
|
16
16
|
}
|
|
17
|
-
export interface IModelRelationBelongsToDynamic<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> =
|
|
17
|
+
export interface IModelRelationBelongsToDynamic<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined> {
|
|
18
18
|
type?: 'belongsTo';
|
|
19
19
|
model?: TypeModelClassLike<MODEL>;
|
|
20
20
|
key?: keyof TypeModelOfModelLike<MODELSelf>[TypeSymbolKeyEntity];
|
|
21
21
|
options?: OPTIONS;
|
|
22
22
|
}
|
|
23
|
-
export interface IModelRelationHasManyDynamic<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> =
|
|
23
|
+
export interface IModelRelationHasManyDynamic<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> | undefined = undefined, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Group extends boolean | undefined = undefined> {
|
|
24
24
|
type?: 'hasMany';
|
|
25
25
|
model?: TypeModelClassLike<MODEL>;
|
|
26
26
|
key?: keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity];
|
|
27
27
|
options?: OPTIONS;
|
|
28
28
|
}
|
|
29
|
-
export interface IModelRelationBelongsToManyDynamic<MODELMiddle extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> =
|
|
29
|
+
export interface IModelRelationBelongsToManyDynamic<MODELMiddle extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> | undefined = undefined, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Group extends boolean | undefined = undefined> {
|
|
30
30
|
type?: 'belongsToMany';
|
|
31
31
|
modelMiddle?: TypeModelClassLike<MODELMiddle>;
|
|
32
32
|
model?: TypeModelClassLike<MODEL>;
|
|
@@ -18,4 +18,4 @@ export type TypeModelSelectGroupParamsColumns<TRecord, ColumnNames extends TypeM
|
|
|
18
18
|
export type TypeModelAggrRelationResultAggrsToNumberType<Columns> = {
|
|
19
19
|
[K in keyof Columns]: number | string;
|
|
20
20
|
};
|
|
21
|
-
export type TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined> = TypeUtilGetParamsGroups<IncludeWrapper> extends string | string[] ? TypeUtilGetParamsGroups<IncludeWrapper> : TypeUtilGetRelationOptionsGroups<Relation>;
|
|
21
|
+
export type TypeUtilGetGroupsFromRelationAndIncludeWrapper<Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilGetParamsGroups<IncludeWrapper> extends string | string[] ? TypeUtilGetParamsGroups<IncludeWrapper> : TypeUtilGetRelationOptionsGroups<Relation>;
|
|
@@ -3,6 +3,7 @@ import type { BeanModelMeta } from '../bean/bean.model/bean.model_meta.ts';
|
|
|
3
3
|
import type { IDecoratorModelOptions } from './onion/model.ts';
|
|
4
4
|
import type { TypeUtilGetModelOptions, TypeUtilGetParamsInlcude, TypeUtilGetParamsWith, TypeUtilGetRelationEntity, TypeUtilGetRelationModel, TypeUtilGetRelationOptions, TypeUtilGetRelationOptionsAutoload, TypeUtilGetRelationType } from './relations.ts';
|
|
5
5
|
import type { IModelRelationOptionsMetaWrapper } from './relationsDef.ts';
|
|
6
|
+
import type { TableIdentity } from './tableIdentity.ts';
|
|
6
7
|
export type TypeModelMutateParamsInclude<MODEL extends BeanModelMeta | undefined> = TypeModelMutateParamsIncludeByModelOptions<TypeUtilGetModelOptions<MODEL>>;
|
|
7
8
|
export type TypeModelMutateParamsIncludeByModelOptions<ModelOptions extends IDecoratorModelOptions | undefined> = ModelOptions extends IDecoratorModelOptions ? {
|
|
8
9
|
[relationName in keyof ModelOptions['relations']]?: TypeModelMutateParamsRelationOptions<ModelOptions['relations'][relationName]>;
|
|
@@ -11,14 +12,17 @@ export type TypeModelMutateParamsRelationOptions<Relation> = boolean | (IModelRe
|
|
|
11
12
|
include?: TypeModelMutateParamsInclude<TypeUtilGetRelationModel<Relation>>;
|
|
12
13
|
with?: Record<string, unknown>;
|
|
13
14
|
});
|
|
14
|
-
export type TypeModelMutateRelationResultMergeInclude<TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined> = {
|
|
15
|
-
[RelationName in (keyof TModelOptions['relations'])]: TInclude[RelationName] extends {} | boolean ? TypeModelMutateRelationResultMergeIncludeWrapper<TModelOptions['relations'][RelationName], TInclude[RelationName]> : TypeModelMutateRelationResultMergeAutoload<TModelOptions['relations'][RelationName]>;
|
|
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]>;
|
|
16
17
|
};
|
|
17
18
|
export type TypeModelMutateRelationResultMergeAutoload<Relation> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilMutateGetRelationEntityByType<Relation, undefined> : never;
|
|
18
19
|
export type TypeModelMutateRelationResultMergeIncludeWrapper<Relation, IncludeWrapper> = IncludeWrapper extends false ? never : IncludeWrapper extends true ? TypeUtilMutateGetRelationEntityByType<Relation, undefined> : IncludeWrapper extends {} ? TypeUtilMutateGetRelationEntityByType<Relation, IncludeWrapper> : never;
|
|
19
|
-
export type TypeUtilMutateGetRelationEntityByType<Relation, IncludeWrapper extends {} | undefined> = TypeUtilMutateGetEntityByType<TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper>;
|
|
20
|
-
export type TypeUtilMutateGetEntityByType<TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined> = TYPE extends '
|
|
21
|
-
|
|
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<{
|
|
22
|
+
id: TableIdentity;
|
|
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 {} ? {
|
|
22
26
|
[RelationName in (keyof TWith)]: TypeModelMutateRelationResultMergeWithRelation<TWith[RelationName]>;
|
|
23
27
|
} : {};
|
|
24
28
|
export type TypeModelMutateRelationResultMergeWithRelation<WithRelation> = WithRelation extends false ? never : WithRelation extends true ? never : WithRelation extends {} ? TypeUtilMutateGetRelationEntityByType<WithRelation, TypeUtilGetRelationOptions<WithRelation>> : never;
|