@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.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 keyof Omit ? Omit[Key] extends true ? never : Key : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model> ? Key : never : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? Select[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? 'select' extends keyof Select[Key] ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Pick<Select[Key], 'select'>, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Pick<Select[Key], 'include' | 'omit'>, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : DefaultModelResult<Schema, RelationFieldType<Schema, Model, Key>, Omit, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
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
- } ? DefaultModelResult<Schema, Model, O, Options, false, false> & {
598
- [Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: I[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : DefaultModelResult<Schema, RelationFieldType<Schema, Model, Key>, undefined, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
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 keyof Omit ? Omit[Key] extends true ? never : Key : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model> ? Key : never : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? Select[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? 'select' extends keyof Select[Key] ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Pick<Select[Key], 'select'>, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Pick<Select[Key], 'include' | 'omit'>, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : DefaultModelResult<Schema, RelationFieldType<Schema, Model, Key>, Omit, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
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
- } ? DefaultModelResult<Schema, Model, O, Options, false, false> & {
598
- [Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: I[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : DefaultModelResult<Schema, RelationFieldType<Schema, Model, Key>, undefined, Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
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
- model,
403
+ realModel,
403
404
  fieldDef.type
404
405
  ].sort();
405
406
  let orderedFK;
406
- if (model !== fieldDef.type) {
407
- orderedFK = sortedModelNames[0] === model ? [
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, model);
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 connection.executeQuery(compiled);
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 connection.executeQuery(compiled);
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 connection.executeQuery(compiled);
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