vona-module-a-orm 5.0.54 → 5.0.55
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/model/metadata/generate.ts +7 -5
- package/dist/index.js +68 -87
- package/dist/lib/dto/dtoMutate.d.ts +2 -1
- package/dist/lib/relationsDynamic.d.ts +2 -2
- package/dist/lib/relationsMutate.d.ts +2 -2
- package/dist/lib/utils.d.ts +3 -0
- package/dist/types/dto/dtoMutate.d.ts +9 -18
- package/dist/types/relations.d.ts +3 -0
- package/dist/types/relationsDef.d.ts +7 -7
- package/dist/types/relationsDefDynamic.d.ts +4 -4
- package/package.json +1 -1
|
@@ -113,10 +113,12 @@ function __parseRelation(nodeRelation: t.ObjectProperty) {
|
|
|
113
113
|
function __parseRelationHasOne(args: t.Node[]) {
|
|
114
114
|
// classModel
|
|
115
115
|
const classModel = __parseRelation_classModel(args[0]);
|
|
116
|
+
// key
|
|
117
|
+
const key = __parseRelation_key(args[1]);
|
|
116
118
|
// options
|
|
117
119
|
const options = __parseRelation_options(args[2]);
|
|
118
120
|
// combine
|
|
119
|
-
return `IModelRelationHasOne<${classModel}, ${options.autoload}, ${options.columns}>`;
|
|
121
|
+
return `IModelRelationHasOne<${classModel}, '${key}', ${options.autoload}, ${options.columns}>`;
|
|
120
122
|
}
|
|
121
123
|
|
|
122
124
|
function __parseRelationBelongsTo(args: t.Node[]) {
|
|
@@ -133,14 +135,14 @@ function __parseRelationBelongsTo(args: t.Node[]) {
|
|
|
133
135
|
function __parseRelationHasMany(args: t.Node[]) {
|
|
134
136
|
// classModel
|
|
135
137
|
const classModel = __parseRelation_classModel(args[0]);
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
+
// key
|
|
139
|
+
const key = __parseRelation_key(args[1]);
|
|
138
140
|
// options
|
|
139
141
|
const options = __parseRelation_options(args[2]);
|
|
140
142
|
// modelJoins
|
|
141
143
|
const modelJoins = __parseRelation_modelJoins(args[3]);
|
|
142
144
|
// combine
|
|
143
|
-
return `IModelRelationHasMany<${classModel}, ${options.autoload}, ${options.columns}
|
|
145
|
+
return `IModelRelationHasMany<${classModel}, '${key}', ${options.autoload}, ${options.columns}, ${modelJoins}, ${options.aggrs}, ${options.groups}>`;
|
|
144
146
|
}
|
|
145
147
|
|
|
146
148
|
function __parseRelationBelongsToMany(args: t.Node[]) {
|
|
@@ -237,7 +239,7 @@ function __parseRelation_options(node: t.Node) {
|
|
|
237
239
|
if (options?.groups) {
|
|
238
240
|
columns = 'undefined';
|
|
239
241
|
} else {
|
|
240
|
-
columns = '\'*\'';
|
|
242
|
+
columns = 'undefined'; // '\'*\'';
|
|
241
243
|
}
|
|
242
244
|
} else {
|
|
243
245
|
if (options?.columns.includes('*')) {
|
package/dist/index.js
CHANGED
|
@@ -2252,6 +2252,49 @@ let ServiceCacheQuery = (_dec$c = Service(), _dec2$c = BeanInfo({
|
|
|
2252
2252
|
}
|
|
2253
2253
|
}) || _class$c) || _class$c);
|
|
2254
2254
|
|
|
2255
|
+
function handleRelationsCollection(relationsStatic, includeWrapper) {
|
|
2256
|
+
// collect
|
|
2257
|
+
const relations = [];
|
|
2258
|
+
// include
|
|
2259
|
+
if (relationsStatic) {
|
|
2260
|
+
for (const key in relationsStatic) {
|
|
2261
|
+
const relationDef = relationsStatic[key];
|
|
2262
|
+
const relationCur = includeWrapper?.include?.[key];
|
|
2263
|
+
let relationReal;
|
|
2264
|
+
let includeReal;
|
|
2265
|
+
let withReal;
|
|
2266
|
+
let autoload;
|
|
2267
|
+
if (relationCur === false) {
|
|
2268
|
+
continue;
|
|
2269
|
+
} else if (relationCur === true) {
|
|
2270
|
+
relationReal = relationDef;
|
|
2271
|
+
autoload = relationDef.options?.autoload;
|
|
2272
|
+
} else if (typeof relationCur === 'object') {
|
|
2273
|
+
relationReal = deepExtend({}, relationDef, {
|
|
2274
|
+
options: relationCur
|
|
2275
|
+
});
|
|
2276
|
+
includeReal = relationCur.include;
|
|
2277
|
+
withReal = relationCur.with;
|
|
2278
|
+
} else if (relationDef.options?.autoload) {
|
|
2279
|
+
relationReal = relationDef;
|
|
2280
|
+
autoload = relationDef.options?.autoload;
|
|
2281
|
+
} else {
|
|
2282
|
+
continue;
|
|
2283
|
+
}
|
|
2284
|
+
relations.push([key, relationReal, includeReal, withReal, autoload]);
|
|
2285
|
+
}
|
|
2286
|
+
}
|
|
2287
|
+
// with
|
|
2288
|
+
if (includeWrapper?.with) {
|
|
2289
|
+
for (const key in includeWrapper.with) {
|
|
2290
|
+
const relationReal = includeWrapper.with[key];
|
|
2291
|
+
if (!relationReal) continue;
|
|
2292
|
+
relations.push([key, relationReal, relationReal.options?.include, relationReal.options?.with, false]);
|
|
2293
|
+
}
|
|
2294
|
+
}
|
|
2295
|
+
return relations;
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2255
2298
|
var _dec$b, _dec2$b, _class$b;
|
|
2256
2299
|
let ServiceRelations = (_dec$b = Service(), _dec2$b = BeanInfo({
|
|
2257
2300
|
module: "a-orm"
|
|
@@ -2787,43 +2830,7 @@ let ServiceRelations = (_dec$b = Service(), _dec2$b = BeanInfo({
|
|
|
2787
2830
|
return this._model.newInstanceTarget(modelClassTarget, meta?.client, meta?.table);
|
|
2788
2831
|
}
|
|
2789
2832
|
handleRelationsCollection(includeWrapper) {
|
|
2790
|
-
|
|
2791
|
-
const relations = [];
|
|
2792
|
-
// include
|
|
2793
|
-
if (this._model.options.relations) {
|
|
2794
|
-
for (const key in this._model.options.relations) {
|
|
2795
|
-
const relationDef = this._model.options.relations[key];
|
|
2796
|
-
const relationCur = includeWrapper?.include?.[key];
|
|
2797
|
-
let relationReal;
|
|
2798
|
-
let includeReal;
|
|
2799
|
-
let withReal;
|
|
2800
|
-
if (relationCur === false) {
|
|
2801
|
-
continue;
|
|
2802
|
-
} else if (relationCur === true) {
|
|
2803
|
-
relationReal = relationDef;
|
|
2804
|
-
} else if (typeof relationCur === 'object') {
|
|
2805
|
-
relationReal = deepExtend({}, relationDef, {
|
|
2806
|
-
options: relationCur
|
|
2807
|
-
});
|
|
2808
|
-
includeReal = relationCur.include;
|
|
2809
|
-
withReal = relationCur.with;
|
|
2810
|
-
} else if (relationDef.options?.autoload) {
|
|
2811
|
-
relationReal = relationDef;
|
|
2812
|
-
} else {
|
|
2813
|
-
continue;
|
|
2814
|
-
}
|
|
2815
|
-
relations.push([key, relationReal, includeReal, withReal]);
|
|
2816
|
-
}
|
|
2817
|
-
}
|
|
2818
|
-
// with
|
|
2819
|
-
if (includeWrapper?.with) {
|
|
2820
|
-
for (const key in includeWrapper.with) {
|
|
2821
|
-
const relationReal = includeWrapper.with[key];
|
|
2822
|
-
if (!relationReal) continue;
|
|
2823
|
-
relations.push([key, relationReal, relationReal.options?.include, relationReal.options?.with]);
|
|
2824
|
-
}
|
|
2825
|
-
}
|
|
2826
|
-
return relations;
|
|
2833
|
+
return handleRelationsCollection(this._model.options.relations, includeWrapper);
|
|
2827
2834
|
}
|
|
2828
2835
|
}) || _class$b) || _class$b);
|
|
2829
2836
|
|
|
@@ -3984,7 +3991,6 @@ function _DtoGet_relation_handle(entityClass, relation, mutateTypeTopLevel) {
|
|
|
3984
3991
|
include: includeReal,
|
|
3985
3992
|
with: withReal
|
|
3986
3993
|
});
|
|
3987
|
-
const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel);
|
|
3988
3994
|
if (mutateTypeTopLevel) {
|
|
3989
3995
|
if (type === 'belongsTo') {
|
|
3990
3996
|
// donot mutate
|
|
@@ -3997,13 +4003,17 @@ function _DtoGet_relation_handle(entityClass, relation, mutateTypeTopLevel) {
|
|
|
3997
4003
|
deleted: z.boolean().optional()
|
|
3998
4004
|
}));
|
|
3999
4005
|
} else if (type === 'hasOne') {
|
|
4006
|
+
const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation);
|
|
4000
4007
|
schema = v.lazy(schemaLazy);
|
|
4001
4008
|
// optional = true;
|
|
4002
4009
|
} else {
|
|
4010
|
+
// hasMany
|
|
4011
|
+
const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation);
|
|
4003
4012
|
schema = v.array(v.lazy(schemaLazy));
|
|
4004
4013
|
}
|
|
4005
4014
|
Api.field(v.optional(), schema)(entityClass.prototype, relationName);
|
|
4006
4015
|
} else {
|
|
4016
|
+
const schemaLazy = _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation);
|
|
4007
4017
|
let schema;
|
|
4008
4018
|
let optional = false;
|
|
4009
4019
|
if (type === 'hasOne' || type === 'belongsTo') {
|
|
@@ -4026,10 +4036,10 @@ function _DtoGet_relation_handle(entityClass, relation, mutateTypeTopLevel) {
|
|
|
4026
4036
|
}
|
|
4027
4037
|
}
|
|
4028
4038
|
}
|
|
4029
|
-
function _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel) {
|
|
4039
|
+
function _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload, mutateTypeTopLevel, relation) {
|
|
4030
4040
|
return () => {
|
|
4031
4041
|
if (!autoload) {
|
|
4032
|
-
return _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel);
|
|
4042
|
+
return _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel, relation);
|
|
4033
4043
|
}
|
|
4034
4044
|
// dynamic
|
|
4035
4045
|
const entityClass = getClassEntityFromClassModel(modelTarget);
|
|
@@ -4038,16 +4048,16 @@ function _DtoGet_relation_handle_schemaLazy(modelTarget, optionsReal, autoload,
|
|
|
4038
4048
|
const dynamicName = `${beanFullName}_${_hashkey}`;
|
|
4039
4049
|
let entityTarget = getSchemaDynamic(dynamicName);
|
|
4040
4050
|
if (!entityTarget) {
|
|
4041
|
-
entityTarget = _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel);
|
|
4051
|
+
entityTarget = _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel, relation);
|
|
4042
4052
|
entityTarget[SymbolSchemaDynamicRefId] = dynamicName;
|
|
4043
4053
|
addSchemaDynamic(dynamicName, entityTarget);
|
|
4044
4054
|
}
|
|
4045
4055
|
return entityTarget;
|
|
4046
4056
|
};
|
|
4047
4057
|
}
|
|
4048
|
-
function _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel) {
|
|
4058
|
+
function _DtoGet_relation_handle_schemaLazy_raw(modelTarget, optionsReal, mutateTypeTopLevel, relation) {
|
|
4049
4059
|
if (mutateTypeTopLevel) {
|
|
4050
|
-
return _DtoMutate_raw(modelTarget, optionsReal, mutateTypeTopLevel, undefined, false); // columnsOmitDefault: undefined
|
|
4060
|
+
return _DtoMutate_raw(modelTarget, optionsReal, mutateTypeTopLevel, undefined, false, relation); // columnsOmitDefault: undefined
|
|
4051
4061
|
} else {
|
|
4052
4062
|
if (optionsReal.groups) {
|
|
4053
4063
|
return DtoGroup(modelTarget, optionsReal.groups, optionsReal.aggrs, optionsReal.columns);
|
|
@@ -4071,50 +4081,11 @@ function _DtoGet_relation_handle_schemaLazy_hashkey(optionsReal, mutateTypeTopLe
|
|
|
4071
4081
|
}
|
|
4072
4082
|
function _DtoGet_relations_collection(modelClass, includeWrapper) {
|
|
4073
4083
|
const beanOptions = appResource.getBean(modelClass);
|
|
4074
|
-
const options = beanOptions
|
|
4075
|
-
|
|
4076
|
-
const relations = [];
|
|
4077
|
-
// include
|
|
4078
|
-
if (options.relations) {
|
|
4079
|
-
for (const key in options.relations) {
|
|
4080
|
-
const relationDef = options.relations[key];
|
|
4081
|
-
const relationCur = includeWrapper?.include?.[key];
|
|
4082
|
-
let relationReal;
|
|
4083
|
-
let includeReal;
|
|
4084
|
-
let withReal;
|
|
4085
|
-
let autoload;
|
|
4086
|
-
if (relationCur === false) {
|
|
4087
|
-
continue;
|
|
4088
|
-
} else if (relationCur === true) {
|
|
4089
|
-
relationReal = relationDef;
|
|
4090
|
-
autoload = relationDef.options?.autoload;
|
|
4091
|
-
} else if (typeof relationCur === 'object') {
|
|
4092
|
-
relationReal = deepExtend({}, relationDef, {
|
|
4093
|
-
options: relationCur
|
|
4094
|
-
});
|
|
4095
|
-
includeReal = relationCur.include;
|
|
4096
|
-
withReal = relationCur.with;
|
|
4097
|
-
} else if (relationDef.options?.autoload) {
|
|
4098
|
-
relationReal = relationDef;
|
|
4099
|
-
autoload = relationDef.options?.autoload;
|
|
4100
|
-
} else {
|
|
4101
|
-
continue;
|
|
4102
|
-
}
|
|
4103
|
-
relations.push([key, relationReal, includeReal, withReal, autoload]);
|
|
4104
|
-
}
|
|
4105
|
-
}
|
|
4106
|
-
// with
|
|
4107
|
-
if (includeWrapper?.with) {
|
|
4108
|
-
for (const key in includeWrapper.with) {
|
|
4109
|
-
const relationReal = includeWrapper.with[key];
|
|
4110
|
-
if (!relationReal) continue;
|
|
4111
|
-
relations.push([key, relationReal, relationReal.options?.include, relationReal.options?.with, false]);
|
|
4112
|
-
}
|
|
4113
|
-
}
|
|
4114
|
-
return relations;
|
|
4084
|
+
const options = beanOptions?.options;
|
|
4085
|
+
return handleRelationsCollection(options?.relations, includeWrapper);
|
|
4115
4086
|
}
|
|
4116
4087
|
|
|
4117
|
-
function _DtoMutate_raw(modelLike, params, mutateTypeTopLevel, columnsOmitDefault, topLevel) {
|
|
4088
|
+
function _DtoMutate_raw(modelLike, params, mutateTypeTopLevel, columnsOmitDefault, topLevel, relation) {
|
|
4118
4089
|
// model
|
|
4119
4090
|
const modelClass = prepareClassModel(modelLike);
|
|
4120
4091
|
// entity
|
|
@@ -4150,13 +4121,23 @@ function _DtoMutate_raw(modelLike, params, mutateTypeTopLevel, columnsOmitDefaul
|
|
|
4150
4121
|
if (!topLevel && mutateTypeTopLevel !== 'create') {
|
|
4151
4122
|
entityClass = $Class.partial(entityClass, ['id', 'deleted']);
|
|
4152
4123
|
}
|
|
4124
|
+
if (!topLevel && relation) {
|
|
4125
|
+
const [_relationName, relationReal] = relation;
|
|
4126
|
+
const {
|
|
4127
|
+
type,
|
|
4128
|
+
key
|
|
4129
|
+
} = relationReal;
|
|
4130
|
+
if (type === 'hasOne' || type === 'hasMany') {
|
|
4131
|
+
entityClass = $Class.omit(entityClass, key);
|
|
4132
|
+
}
|
|
4133
|
+
}
|
|
4153
4134
|
// relations
|
|
4154
4135
|
_DtoGet_relations(modelClass, entityClass, params, mutateTypeTopLevel);
|
|
4155
4136
|
return entityClass;
|
|
4156
4137
|
}
|
|
4157
4138
|
|
|
4158
4139
|
function DtoCreate(modelLike, params) {
|
|
4159
|
-
return _DtoMutate_raw(modelLike, params, 'create', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'], true);
|
|
4140
|
+
return _DtoMutate_raw(modelLike, params, 'create', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'], true, undefined);
|
|
4160
4141
|
}
|
|
4161
4142
|
|
|
4162
4143
|
function DtoQuery(classRef, keys) {
|
|
@@ -4176,7 +4157,7 @@ function DtoSelectAndCount(modelLike, params) {
|
|
|
4176
4157
|
}
|
|
4177
4158
|
|
|
4178
4159
|
function DtoUpdate(modelLike, params) {
|
|
4179
|
-
return _DtoMutate_raw(modelLike, params, 'update', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'], true);
|
|
4160
|
+
return _DtoMutate_raw(modelLike, params, 'update', ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'], true, undefined);
|
|
4180
4161
|
}
|
|
4181
4162
|
|
|
4182
4163
|
// not use Partial/$Class.partial, for form render at frontend
|
|
@@ -4,5 +4,6 @@ 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
|
+
import type { IRelationItem } from '../../types/relationsDef.ts';
|
|
7
8
|
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;
|
|
9
|
+
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, relation?: IRelationItem): any;
|
|
@@ -2,9 +2,9 @@ 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>> | undefined = undefined>(classModel: TypeModelClassLike<MODEL>, key:
|
|
5
|
+
declare function hasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined>(classModel: TypeModelClassLike<MODEL>, key: KEY, options?: OPTIONS): IModelRelationHasOneDynamic<MODEL, KEY, OPTIONS>;
|
|
6
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:
|
|
7
|
+
declare function hasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], OPTIONS extends IModelRelationOptionsManyDynamic<TypeModelOfModelLike<MODEL>, ModelJoins, Group> | undefined = undefined, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Group extends boolean | undefined = undefined>(classModel: TypeModelClassLike<MODEL>, key: KEY, options?: OPTIONS, _modelJoins?: ModelJoins, _group?: Group): IModelRelationHasManyDynamic<MODEL, KEY, OPTIONS, ModelJoins, Group>;
|
|
8
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;
|
|
@@ -3,8 +3,8 @@ import type { IModelClassRecord } from '../types/onion/model.ts';
|
|
|
3
3
|
import type { TypeModelClassLike, TypeModelOfModelLike, TypeSymbolKeyEntity } from '../types/relations.ts';
|
|
4
4
|
import type { IModelRelationBelongsToManyDynamic, IModelRelationHasManyDynamic, IModelRelationHasOneDynamic } from '../types/relationsDefDynamic.ts';
|
|
5
5
|
import type { IModelRelationOptionsBelongsToManyMutate, IModelRelationOptionsManyMutate, IModelRelationOptionsOneMutate } from '../types/relationsDefMutate.ts';
|
|
6
|
-
declare function hasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneMutate<TypeModelOfModelLike<MODEL>>>(classModel: TypeModelClassLike<MODEL>, key:
|
|
7
|
-
declare function hasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsManyMutate<TypeModelOfModelLike<MODEL>>>(classModel: TypeModelClassLike<MODEL>, key:
|
|
6
|
+
declare function hasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], OPTIONS extends IModelRelationOptionsOneMutate<TypeModelOfModelLike<MODEL>>>(classModel: TypeModelClassLike<MODEL>, key: KEY, options?: OPTIONS): IModelRelationHasOneDynamic<MODEL, KEY, OPTIONS>;
|
|
7
|
+
declare function hasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], OPTIONS extends IModelRelationOptionsManyMutate<TypeModelOfModelLike<MODEL>>>(classModel: TypeModelClassLike<MODEL>, key: KEY, options?: OPTIONS): IModelRelationHasManyDynamic<MODEL, KEY, OPTIONS>;
|
|
8
8
|
declare function belongsToMany<MODELMiddle extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsBelongsToManyMutate<TypeModelOfModelLike<MODEL>>>(classModelMiddle: TypeModelClassLike<MODELMiddle>, classModel: TypeModelClassLike<MODEL>, keyFrom: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity], keyTo: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity], options?: OPTIONS): IModelRelationBelongsToManyDynamic<MODELMiddle, MODEL, OPTIONS>;
|
|
9
9
|
export declare const $relationMutate: {
|
|
10
10
|
hasOne: typeof hasOne;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { IModelRelationIncludeWrapper } from '../types/model.ts';
|
|
2
|
+
import type { IRelationItem } from '../types/relationsDef.ts';
|
|
3
|
+
export declare function handleRelationsCollection(relationsStatic?: Record<string, any>, includeWrapper?: IModelRelationIncludeWrapper): IRelationItem[];
|
|
@@ -4,7 +4,7 @@ import type { BeanModelMeta } from '../../bean/bean.model/bean.model_meta.ts';
|
|
|
4
4
|
import type { IModelRelationIncludeWrapper } from '../model.ts';
|
|
5
5
|
import type { TypeModelColumnsStrict } from '../modelWhere.ts';
|
|
6
6
|
import type { IDecoratorModelOptions, IModelClassRecord } from '../onion/model.ts';
|
|
7
|
-
import type { TypeModelOfModelLike, TypeSymbolKeyEntity, TypeUtilEntityOmit, TypeUtilEntityPartial, TypeUtilEntitySelector, TypeUtilGetColumnsFromRelationAndIncludeWrapper, TypeUtilGetModelOptions, TypeUtilGetParamsColumns, TypeUtilGetParamsInlcude, TypeUtilGetParamsWith, TypeUtilGetRelationEntity, TypeUtilGetRelationModel, TypeUtilGetRelationOptions, TypeUtilGetRelationOptionsAutoload, TypeUtilGetRelationType, TypeUtilPrepareColumns } from '../relations.ts';
|
|
7
|
+
import type { TypeModelOfModelLike, TypeSymbolKeyEntity, TypeUtilEntityOmit, TypeUtilEntityPartial, TypeUtilEntitySelector, TypeUtilGetColumnsFromRelationAndIncludeWrapper, TypeUtilGetModelOptions, TypeUtilGetParamsColumns, TypeUtilGetParamsInlcude, TypeUtilGetParamsWith, TypeUtilGetRelationEntity, TypeUtilGetRelationKey, TypeUtilGetRelationModel, TypeUtilGetRelationOptions, TypeUtilGetRelationOptionsAutoload, TypeUtilGetRelationType, TypeUtilPrepareColumns } from '../relations.ts';
|
|
8
8
|
export type TypeDtoMutateType = 'create' | 'update' | 'mutate';
|
|
9
9
|
export type IDtoMutateParams<ModelLike extends BeanModelMeta | (keyof IModelClassRecord)> = IBuildDtoMutateParams<TypeModelOfModelLike<ModelLike>[TypeSymbolKeyEntity], TypeModelOfModelLike<ModelLike>>;
|
|
10
10
|
export interface IBuildDtoMutateParams<TRecord, Model extends BeanModelMeta> extends IModelRelationIncludeWrapper<Model>, IBuildDtoMutateParamsBasic<TRecord> {
|
|
@@ -13,7 +13,7 @@ export interface IBuildDtoMutateParamsBasic<TRecord> {
|
|
|
13
13
|
columns?: TypeModelColumnsStrict<TRecord>;
|
|
14
14
|
}
|
|
15
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>>>) : {});
|
|
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, REFKEY = undefined> = TypeDtoMutateRelationResultEntity<TRecord, TColumns extends string | string[] ? TColumns : TypeUtilGetParamsColumns<TOptionsRelation>, TMutateTypeTopLevel, TColumnsOmitDefault, TTopLevel, REFKEY> & (TModel extends BeanModelMeta ? (OmitNever<TypeDtoMutateRelationResultMergeInclude<TMutateTypeTopLevel, TypeUtilGetModelOptions<TModel>, TypeUtilGetParamsInlcude<TOptionsRelation>>> & OmitNever<TypeDtoMutateModelRelationResultMergeWith<TMutateTypeTopLevel, TypeUtilGetParamsWith<TOptionsRelation>>>) : {});
|
|
17
17
|
type TypeDtoMutateRelationResultMergeInclude<TMutateTypeTopLevel extends TypeDtoMutateType, TModelOptions extends IDecoratorModelOptions, TInclude extends {} | undefined | unknown> = {
|
|
18
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
19
|
};
|
|
@@ -23,28 +23,19 @@ type TypeDtoMutateModelRelationResultMergeWith<TMutateTypeTopLevel extends TypeD
|
|
|
23
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
24
|
type TypeDtoMutateRelationResultMergeAutoload<TMutateTypeTopLevel extends TypeDtoMutateType, Relation> = TypeUtilGetRelationOptionsAutoload<Relation> extends true ? TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel, Relation, undefined> : never;
|
|
25
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<{
|
|
26
|
+
type TypeUtilGetDtoMutateRelationEntityByType<TMutateTypeTopLevel extends TypeDtoMutateType, Relation, IncludeWrapper extends {} | undefined | unknown> = TypeUtilGetDtoMutateEntityByType<TMutateTypeTopLevel, TypeUtilGetRelationEntity<Relation>, TypeUtilGetRelationType<Relation>, TypeUtilGetRelationModel<Relation>, IncludeWrapper, TypeUtilGetColumnsFromRelationAndIncludeWrapper<Relation, IncludeWrapper>, TypeUtilGetRelationKey<Relation>>;
|
|
27
|
+
type TypeUtilGetDtoMutateEntityByType<TMutateTypeTopLevel extends TypeDtoMutateType, TRecord, TYPE, TModel extends BeanModelMeta | undefined, IncludeWrapper extends {} | undefined | unknown, Columns, REFKEY = undefined> = TYPE extends 'belongsTo' ? never : TYPE extends 'belongsToMany' ? Array<{
|
|
28
28
|
id: TableIdentity;
|
|
29
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 ?
|
|
30
|
+
}> | undefined : TYPE extends 'hasMany' ? Array<TypeDtoMutateRelationResult<TRecord, TModel, IncludeWrapper, TMutateTypeTopLevel, undefined, false, Columns, REFKEY>> | undefined : TypeDtoMutateRelationResult<TRecord, TModel, IncludeWrapper, TMutateTypeTopLevel, undefined, false, Columns, REFKEY> | undefined;
|
|
31
|
+
type TypeDtoMutateRelationResultEntity<TRecord, Columns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined, TTopLevel extends boolean | undefined = undefined, REFKEY = undefined> = TypeDtoMutateRelationResultPatch<TypeDtoMutateRelationResultEntityInner<TRecord, Columns, TMutateTypeTopLevel, TColumnsOmitDefault, TTopLevel>, TMutateTypeTopLevel, TTopLevel, REFKEY>;
|
|
32
|
+
type TypeDtoMutateRelationResultPatch<TRecordResult, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TTopLevel extends boolean | undefined = undefined, REFKEY = undefined> = TTopLevel extends false ? TypeUtilEntityOmit<TypeDtoMutateRelationResultPatch2<TRecordResult, TMutateTypeTopLevel, TTopLevel>, REFKEY> : TypeDtoMutateRelationResultPatch2<TRecordResult, TMutateTypeTopLevel, TTopLevel>;
|
|
33
|
+
type TypeDtoMutateRelationResultPatch2<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
34
|
type TypeDtoMutateRelationResultEntityInner<TRecord, Columns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = [
|
|
34
35
|
Columns
|
|
35
36
|
] extends [string | string[]] ? TypeDtoMutateRelationResultEntityFromColumns<TRecord, Columns, TMutateTypeTopLevel, TTopLevel> : TypeDtoMutateRelationResultEntityFromColumnsOmitDefault<TRecord, TMutateTypeTopLevel, TColumnsOmitDefault>;
|
|
36
37
|
type TypeDtoMutateRelationResultEntityFromColumns<TRecord, Columns = undefined, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TTopLevel extends boolean | undefined = undefined> = TypeUtilEntitySelector<TRecord, TypeUtilPrepareColumns<TypeDtoMutateRelationResultPrepareColumns<TypeUtilPrepareColumns<Columns>, TMutateTypeTopLevel, TTopLevel>>>;
|
|
37
38
|
type TypeDtoMutateRelationResultEntityFromColumnsOmitDefault<TRecord, TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined> = TypeUtilEntityOmit<TRecord, TypeUtilPrepareColumns<TypeDtoMutateRelationResultPrepareColumnsOmitDefault<TMutateTypeTopLevel, TColumnsOmitDefault>>>;
|
|
38
39
|
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
|
-
];
|
|
40
|
+
type TypeDtoMutateRelationResultPrepareColumnsOmitDefault<TMutateTypeTopLevel extends TypeDtoMutateType | undefined = undefined, TColumnsOmitDefault extends string | string[] | undefined = undefined> = TColumnsOmitDefault extends string | string[] ? TColumnsOmitDefault : TMutateTypeTopLevel extends 'create' ? ['id', 'iid', 'deleted', 'createdAt', 'updatedAt'] : ['iid', 'createdAt', 'updatedAt'];
|
|
50
41
|
export {};
|
|
@@ -26,6 +26,9 @@ export type TypeModelParamsRelationOptions<Relation> = boolean | (Omit<TypeUtilG
|
|
|
26
26
|
export type TypeUtilGetRelationType<Relation> = Relation extends {
|
|
27
27
|
type?: infer TYPE;
|
|
28
28
|
} ? TYPE : undefined;
|
|
29
|
+
export type TypeUtilGetRelationKey<Relation> = Relation extends {
|
|
30
|
+
key?: infer KEY;
|
|
31
|
+
} ? KEY : undefined;
|
|
29
32
|
export type TypeUtilGetRelationModel<Relation> = Relation extends {
|
|
30
33
|
model?: ((() => Constructable<infer MODEL extends BeanModelMeta>) | Constructable<infer MODEL extends BeanModelMeta>);
|
|
31
34
|
} ? MODEL : Relation extends {
|
|
@@ -10,22 +10,22 @@ import type { TypeModelClassLike, TypeModelOfModelLike, TypeModelsClassLikeGener
|
|
|
10
10
|
import type { TypeEntityTableColumnNamesOfGeneral, TypeEntityTableColumnsOfGeneral } from './relationsColumns.ts';
|
|
11
11
|
import type { TypeEntityTableNamesOfGeneral } from './relationsTables.ts';
|
|
12
12
|
export type TypeModelRelationType = 'hasOne' | 'belongsTo' | 'hasMany' | 'belongsToMany';
|
|
13
|
-
export interface IModelRelationHasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>> {
|
|
13
|
+
export interface IModelRelationHasOne<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity] | undefined = keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>> {
|
|
14
14
|
type?: 'hasOne';
|
|
15
15
|
model?: TypeModelClassLike<MODEL>;
|
|
16
|
-
key?:
|
|
16
|
+
key?: KEY;
|
|
17
17
|
options?: IModelRelationOptionsOne<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS>;
|
|
18
18
|
}
|
|
19
|
-
export interface IModelRelationBelongsTo<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>> {
|
|
19
|
+
export interface IModelRelationBelongsTo<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>> {
|
|
20
20
|
type?: 'belongsTo';
|
|
21
21
|
model?: TypeModelClassLike<MODEL>;
|
|
22
22
|
key?: keyof TypeModelOfModelLike<MODELSelf>[TypeSymbolKeyEntity];
|
|
23
23
|
options?: IModelRelationOptionsOne<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS>;
|
|
24
24
|
}
|
|
25
|
-
export interface IModelRelationHasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined, Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined> {
|
|
25
|
+
export interface IModelRelationHasMany<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity] | undefined = keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined, Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined> {
|
|
26
26
|
type?: 'hasMany';
|
|
27
27
|
model?: TypeModelClassLike<MODEL>;
|
|
28
|
-
key?:
|
|
28
|
+
key?: KEY;
|
|
29
29
|
options?: IModelRelationOptionsMany<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups>;
|
|
30
30
|
}
|
|
31
31
|
export interface IModelRelationBelongsToMany<MODELMiddle extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Aggrs extends TypeModelSelectAggrParamsAggrs<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined, Groups extends TypeModelColumnsStrict<TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity]> | undefined = undefined> {
|
|
@@ -36,7 +36,7 @@ export interface IModelRelationBelongsToMany<MODELMiddle extends BeanModelMeta |
|
|
|
36
36
|
keyTo?: keyof TypeModelOfModelLike<MODELMiddle>[TypeSymbolKeyEntity];
|
|
37
37
|
options?: IModelRelationOptionsMany<TypeModelOfModelLike<MODEL>, AUTOLOAD, COLUMNS, ModelJoins, Aggrs, Groups>;
|
|
38
38
|
}
|
|
39
|
-
export interface IModelRelationOptionsOne<MODEL extends BeanModelMeta, AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>> extends IModelRelationOptionsMetaWrapper {
|
|
39
|
+
export interface IModelRelationOptionsOne<MODEL extends BeanModelMeta, AUTOLOAD extends boolean = false, COLUMNS extends TypeModelColumn<MODEL[TypeSymbolKeyEntity]> | undefined = TypeModelColumn<MODEL[TypeSymbolKeyEntity]>> extends IModelRelationOptionsMetaWrapper {
|
|
40
40
|
autoload?: AUTOLOAD;
|
|
41
41
|
columns?: TypeModelColumnsPatch<MODEL[TypeSymbolKeyEntity], COLUMNS>;
|
|
42
42
|
}
|
|
@@ -57,4 +57,4 @@ export interface IModelRelationOptionsMetaWrapper {
|
|
|
57
57
|
meta?: IModelRelationOptionsMeta;
|
|
58
58
|
}
|
|
59
59
|
export type TypeModelRelationOptionsMetaClient = '_auto_' | '_initial_' | '_inherit_' | keyof IDatabaseClientRecord | ServiceDb;
|
|
60
|
-
export type IRelationItem = [string, any, any, any];
|
|
60
|
+
export type IRelationItem = [string, any, any, any, boolean];
|
|
@@ -8,10 +8,10 @@ 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>> | undefined = undefined> {
|
|
11
|
+
export interface IModelRelationHasOneDynamic<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined> {
|
|
12
12
|
type?: 'hasOne';
|
|
13
13
|
model?: TypeModelClassLike<MODEL>;
|
|
14
|
-
key?:
|
|
14
|
+
key?: KEY;
|
|
15
15
|
options?: OPTIONS;
|
|
16
16
|
}
|
|
17
17
|
export interface IModelRelationBelongsToDynamic<MODELSelf extends BeanModelMeta | (keyof IModelClassRecord), MODEL extends BeanModelMeta | (keyof IModelClassRecord), OPTIONS extends IModelRelationOptionsOneDynamic<TypeModelOfModelLike<MODEL>> | undefined = undefined> {
|
|
@@ -20,10 +20,10 @@ export interface IModelRelationBelongsToDynamic<MODELSelf extends BeanModelMeta
|
|
|
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> | undefined = undefined, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined, Group extends boolean | undefined = undefined> {
|
|
23
|
+
export interface IModelRelationHasManyDynamic<MODEL extends BeanModelMeta | (keyof IModelClassRecord), KEY extends keyof TypeModelOfModelLike<MODEL>[TypeSymbolKeyEntity], 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
|
-
key?:
|
|
26
|
+
key?: KEY;
|
|
27
27
|
options?: OPTIONS;
|
|
28
28
|
}
|
|
29
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> {
|