@zenstackhq/orm 3.0.0-beta.31 → 3.0.0-beta.33
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 +15 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -9
- package/dist/index.d.ts +13 -9
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.d.cts
CHANGED
|
@@ -335,6 +335,7 @@ interface RuntimePlugin<Schema extends SchemaDef = SchemaDef> {
|
|
|
335
335
|
description?: string;
|
|
336
336
|
/**
|
|
337
337
|
* Custom function implementations.
|
|
338
|
+
* @private
|
|
338
339
|
*/
|
|
339
340
|
functions?: Record<string, ZModelFunction<Schema>>;
|
|
340
341
|
/**
|
|
@@ -495,6 +496,8 @@ type ClientOptions<Schema extends SchemaDef> = {
|
|
|
495
496
|
dialect: Dialect;
|
|
496
497
|
/**
|
|
497
498
|
* Custom function definitions.
|
|
499
|
+
*
|
|
500
|
+
* @private
|
|
498
501
|
*/
|
|
499
502
|
functions?: Record<string, ZModelFunction<Schema>>;
|
|
500
503
|
/**
|
|
@@ -579,7 +582,7 @@ type QueryLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, F
|
|
|
579
582
|
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
583
|
type SchemaLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['omit'] extends true ? true : false;
|
|
581
584
|
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
|
|
585
|
+
[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
586
|
};
|
|
584
587
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
585
588
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -589,16 +592,17 @@ type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>
|
|
|
589
592
|
[Key in keyof S]: number;
|
|
590
593
|
} : never;
|
|
591
594
|
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
|
-
|
|
595
|
+
select: infer S extends object;
|
|
596
|
+
omit?: infer O extends object;
|
|
597
|
+
} & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
|
|
598
|
+
include: infer I extends object;
|
|
599
|
+
omit?: infer O extends object;
|
|
600
|
+
} & Record<string, unknown> ? // select all non-omitted scalar fields
|
|
601
|
+
DefaultModelResult<Schema, Model, O, Options, false, false> & {
|
|
602
|
+
[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
603
|
} : Args extends {
|
|
600
604
|
omit: infer O;
|
|
601
|
-
} ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
605
|
+
} & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
602
606
|
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
607
|
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
608
|
type TypeDefResult<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Partial extends boolean = false> = PartialIf<Optional<{
|
package/dist/index.d.ts
CHANGED
|
@@ -335,6 +335,7 @@ interface RuntimePlugin<Schema extends SchemaDef = SchemaDef> {
|
|
|
335
335
|
description?: string;
|
|
336
336
|
/**
|
|
337
337
|
* Custom function implementations.
|
|
338
|
+
* @private
|
|
338
339
|
*/
|
|
339
340
|
functions?: Record<string, ZModelFunction<Schema>>;
|
|
340
341
|
/**
|
|
@@ -495,6 +496,8 @@ type ClientOptions<Schema extends SchemaDef> = {
|
|
|
495
496
|
dialect: Dialect;
|
|
496
497
|
/**
|
|
497
498
|
* Custom function definitions.
|
|
499
|
+
*
|
|
500
|
+
* @private
|
|
498
501
|
*/
|
|
499
502
|
functions?: Record<string, ZModelFunction<Schema>>;
|
|
500
503
|
/**
|
|
@@ -579,7 +582,7 @@ type QueryLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, F
|
|
|
579
582
|
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
583
|
type SchemaLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['omit'] extends true ? true : false;
|
|
581
584
|
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
|
|
585
|
+
[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
586
|
};
|
|
584
587
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
585
588
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -589,16 +592,17 @@ type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>
|
|
|
589
592
|
[Key in keyof S]: number;
|
|
590
593
|
} : never;
|
|
591
594
|
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
|
-
|
|
595
|
+
select: infer S extends object;
|
|
596
|
+
omit?: infer O extends object;
|
|
597
|
+
} & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
|
|
598
|
+
include: infer I extends object;
|
|
599
|
+
omit?: infer O extends object;
|
|
600
|
+
} & Record<string, unknown> ? // select all non-omitted scalar fields
|
|
601
|
+
DefaultModelResult<Schema, Model, O, Options, false, false> & {
|
|
602
|
+
[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
603
|
} : Args extends {
|
|
600
604
|
omit: infer O;
|
|
601
|
-
} ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
605
|
+
} & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
|
|
602
606
|
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
607
|
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
608
|
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");
|
|
@@ -6324,7 +6325,7 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends DefaultQueryExe
|
|
|
6324
6325
|
parameters
|
|
6325
6326
|
};
|
|
6326
6327
|
}
|
|
6327
|
-
return
|
|
6328
|
+
return this.internalExecuteQuery(connection, compiled);
|
|
6328
6329
|
}
|
|
6329
6330
|
if ((InsertQueryNode.is(query) || UpdateQueryNode.is(query)) && this.hasEntityMutationPluginsWithAfterMutationHooks) {
|
|
6330
6331
|
query = {
|
|
@@ -6353,7 +6354,7 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends DefaultQueryExe
|
|
|
6353
6354
|
return beforeMutationEntities;
|
|
6354
6355
|
}, "loadBeforeMutationEntities");
|
|
6355
6356
|
await this.callBeforeMutationHooks(finalQuery, mutationInfo, loadBeforeMutationEntities, connectionClient, queryId);
|
|
6356
|
-
const result = await
|
|
6357
|
+
const result = await this.internalExecuteQuery(connection, compiled);
|
|
6357
6358
|
if (!this.driver.isTransactionConnection(connection)) {
|
|
6358
6359
|
await this.callAfterMutationHooks(result, finalQuery, mutationInfo, connectionClient, "all", queryId);
|
|
6359
6360
|
} else {
|
|
@@ -6490,7 +6491,7 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends DefaultQueryExe
|
|
|
6490
6491
|
where: this.andNodes(selectQueryNode.where, where)
|
|
6491
6492
|
};
|
|
6492
6493
|
const compiled = this.compileQuery(selectQueryNode, createQueryId2());
|
|
6493
|
-
const result = await
|
|
6494
|
+
const result = await this.internalExecuteQuery(connection, compiled);
|
|
6494
6495
|
return result.rows;
|
|
6495
6496
|
}
|
|
6496
6497
|
andNodes(condition1, condition2) {
|
|
@@ -6502,6 +6503,13 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends DefaultQueryExe
|
|
|
6502
6503
|
return condition2;
|
|
6503
6504
|
}
|
|
6504
6505
|
}
|
|
6506
|
+
async internalExecuteQuery(connection, compiledQuery) {
|
|
6507
|
+
try {
|
|
6508
|
+
return await connection.executeQuery(compiledQuery);
|
|
6509
|
+
} catch (err) {
|
|
6510
|
+
throw createDBQueryError("Failed to execute query", err, compiledQuery.sql, compiledQuery.parameters);
|
|
6511
|
+
}
|
|
6512
|
+
}
|
|
6505
6513
|
};
|
|
6506
6514
|
|
|
6507
6515
|
// src/client/functions.ts
|