@zenstackhq/orm 3.0.0-beta.31 → 3.0.0-beta.32
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.cjs +5 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -9
- package/dist/index.d.ts +10 -9
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.d.cts
CHANGED
|
@@ -579,7 +579,7 @@ type QueryLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, F
|
|
|
579
579
|
type OptionsLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Options extends QueryOptions<Schema>> = Model extends keyof Options['omit'] ? Field extends keyof Options['omit'][Model] ? Options['omit'][Model][Field] extends boolean ? Options['omit'][Model][Field] : undefined : undefined : undefined;
|
|
580
580
|
type SchemaLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['omit'] extends true ? true : false;
|
|
581
581
|
type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit, Options extends QueryOptions<Schema>> = {
|
|
582
|
-
[Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends
|
|
582
|
+
[Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model> ? Key : never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Select[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
|
|
583
583
|
};
|
|
584
584
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
585
585
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -589,16 +589,17 @@ type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>
|
|
|
589
589
|
[Key in keyof S]: number;
|
|
590
590
|
} : never;
|
|
591
591
|
type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = WrapType<Args extends {
|
|
592
|
-
select: infer S;
|
|
593
|
-
omit?: infer O;
|
|
594
|
-
} ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
|
|
595
|
-
include: infer I;
|
|
596
|
-
omit?: infer O;
|
|
597
|
-
}
|
|
598
|
-
|
|
592
|
+
select: infer S extends object;
|
|
593
|
+
omit?: infer O extends object;
|
|
594
|
+
} & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
|
|
595
|
+
include: infer I extends object;
|
|
596
|
+
omit?: infer O extends object;
|
|
597
|
+
} & Record<string, unknown> ? // select all non-omitted scalar fields
|
|
598
|
+
DefaultModelResult<Schema, Model, O, Options, false, false> & {
|
|
599
|
+
[Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
|
|
599
600
|
} : Args extends {
|
|
600
601
|
omit: infer O;
|
|
601
|
-
} ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
602
|
+
} & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
602
603
|
type SimplifiedResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = Simplify<ModelResult<Schema, Model, Args, Options, Optional, Array>>;
|
|
603
604
|
type SimplifiedPlainResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>> = Simplify<ModelResult<Schema, Model, Args, Options, false, false>>;
|
|
604
605
|
type TypeDefResult<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Partial extends boolean = false> = PartialIf<Optional<{
|
package/dist/index.d.ts
CHANGED
|
@@ -579,7 +579,7 @@ type QueryLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, F
|
|
|
579
579
|
type OptionsLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Options extends QueryOptions<Schema>> = Model extends keyof Options['omit'] ? Field extends keyof Options['omit'][Model] ? Options['omit'][Model][Field] extends boolean ? Options['omit'][Model][Field] : undefined : undefined : undefined;
|
|
580
580
|
type SchemaLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['omit'] extends true ? true : false;
|
|
581
581
|
type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit, Options extends QueryOptions<Schema>> = {
|
|
582
|
-
[Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends
|
|
582
|
+
[Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model> ? Key : never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Select[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
|
|
583
583
|
};
|
|
584
584
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
585
585
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -589,16 +589,17 @@ type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>
|
|
|
589
589
|
[Key in keyof S]: number;
|
|
590
590
|
} : never;
|
|
591
591
|
type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = WrapType<Args extends {
|
|
592
|
-
select: infer S;
|
|
593
|
-
omit?: infer O;
|
|
594
|
-
} ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
|
|
595
|
-
include: infer I;
|
|
596
|
-
omit?: infer O;
|
|
597
|
-
}
|
|
598
|
-
|
|
592
|
+
select: infer S extends object;
|
|
593
|
+
omit?: infer O extends object;
|
|
594
|
+
} & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
|
|
595
|
+
include: infer I extends object;
|
|
596
|
+
omit?: infer O extends object;
|
|
597
|
+
} & Record<string, unknown> ? // select all non-omitted scalar fields
|
|
598
|
+
DefaultModelResult<Schema, Model, O, Options, false, false> & {
|
|
599
|
+
[Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
|
|
599
600
|
} : Args extends {
|
|
600
601
|
omit: infer O;
|
|
601
|
-
} ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
602
|
+
} & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
602
603
|
type SimplifiedResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = Simplify<ModelResult<Schema, Model, Args, Options, Optional, Array>>;
|
|
603
604
|
type SimplifiedPlainResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>> = Simplify<ModelResult<Schema, Model, Args, Options, false, false>>;
|
|
604
605
|
type TypeDefResult<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Partial extends boolean = false> = PartialIf<Optional<{
|
package/dist/index.js
CHANGED
|
@@ -396,15 +396,16 @@ function getManyToManyRelation(schema, model, field) {
|
|
|
396
396
|
if (!fieldDef.array || !fieldDef.relation?.opposite) {
|
|
397
397
|
return void 0;
|
|
398
398
|
}
|
|
399
|
+
const realModel = fieldDef.originModel ?? model;
|
|
399
400
|
const oppositeFieldDef = requireField(schema, fieldDef.type, fieldDef.relation.opposite);
|
|
400
401
|
if (oppositeFieldDef.array) {
|
|
401
402
|
const sortedModelNames = [
|
|
402
|
-
|
|
403
|
+
realModel,
|
|
403
404
|
fieldDef.type
|
|
404
405
|
].sort();
|
|
405
406
|
let orderedFK;
|
|
406
|
-
if (
|
|
407
|
-
orderedFK = sortedModelNames[0] ===
|
|
407
|
+
if (realModel !== fieldDef.type) {
|
|
408
|
+
orderedFK = sortedModelNames[0] === realModel ? [
|
|
408
409
|
"A",
|
|
409
410
|
"B"
|
|
410
411
|
] : [
|
|
@@ -424,7 +425,7 @@ function getManyToManyRelation(schema, model, field) {
|
|
|
424
425
|
"A"
|
|
425
426
|
];
|
|
426
427
|
}
|
|
427
|
-
const modelIdFields = requireIdFields(schema,
|
|
428
|
+
const modelIdFields = requireIdFields(schema, realModel);
|
|
428
429
|
invariant(modelIdFields.length === 1, "Only single-field ID is supported for many-to-many relation");
|
|
429
430
|
const otherIdFields = requireIdFields(schema, fieldDef.type);
|
|
430
431
|
invariant(otherIdFields.length === 1, "Only single-field ID is supported for many-to-many relation");
|