@zenstackhq/orm 3.0.0 → 3.1.0

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 CHANGED
@@ -560,8 +560,9 @@ function extractFieldName(node) {
560
560
  __name(extractFieldName, "extractFieldName");
561
561
 
562
562
  // src/client/crud/operations/base.ts
563
- import { createId } from "@paralleldrive/cuid2";
563
+ import { createId as cuid2 } from "@paralleldrive/cuid2";
564
564
  import { clone, enumerate as enumerate2, invariant as invariant5, isPlainObject as isPlainObject2 } from "@zenstackhq/common-helpers";
565
+ import { default as cuid1 } from "cuid";
565
566
  import { createQueryId, expressionBuilder as expressionBuilder2, sql as sql4 } from "kysely";
566
567
  import { nanoid } from "nanoid";
567
568
  import { match as match6 } from "ts-pattern";
@@ -2547,7 +2548,20 @@ var BaseOperationHandler = class {
2547
2548
  }
2548
2549
  evalGenerator(defaultValue) {
2549
2550
  if (schema_exports.ExpressionUtils.isCall(defaultValue)) {
2550
- return match6(defaultValue.function).with("cuid", () => createId()).with("uuid", () => defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args?.[0]) && defaultValue.args[0].value === 7 ? uuid.v7() : uuid.v4()).with("nanoid", () => defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args[0]) && typeof defaultValue.args[0].value === "number" ? nanoid(defaultValue.args[0].value) : nanoid()).with("ulid", () => ulid()).otherwise(() => void 0);
2551
+ const firstArgVal = defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args[0]) ? defaultValue.args[0].value : void 0;
2552
+ return match6(defaultValue.function).with("cuid", () => {
2553
+ const version = firstArgVal;
2554
+ const generated = version === 2 ? cuid2() : cuid1();
2555
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2556
+ }).with("uuid", () => {
2557
+ const version = firstArgVal;
2558
+ const generated = version === 7 ? uuid.v7() : uuid.v4();
2559
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2560
+ }).with("nanoid", () => {
2561
+ const length = firstArgVal;
2562
+ const generated = typeof length === "number" ? nanoid(length) : nanoid();
2563
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2564
+ }).with("ulid", () => this.formatGeneratedValue(ulid(), defaultValue.args?.[0])).otherwise(() => void 0);
2551
2565
  } else if (schema_exports.ExpressionUtils.isMember(defaultValue) && schema_exports.ExpressionUtils.isCall(defaultValue.receiver) && defaultValue.receiver.function === "auth") {
2552
2566
  let val = this.client.$auth;
2553
2567
  for (const member of defaultValue.members) {
@@ -2558,6 +2572,12 @@ var BaseOperationHandler = class {
2558
2572
  return void 0;
2559
2573
  }
2560
2574
  }
2575
+ formatGeneratedValue(generated, formatExpr) {
2576
+ if (!formatExpr || !schema_exports.ExpressionUtils.isLiteral(formatExpr) || typeof formatExpr.value !== "string") {
2577
+ return generated;
2578
+ }
2579
+ return formatExpr.value.replace(/(?<!\\)%s/g, generated).replace(/\\%s/g, "%s");
2580
+ }
2561
2581
  async update(kysely, model, where, data, fromRelation, allowRelationUpdate = true, throwIfNotFound = true, fieldsToReturn) {
2562
2582
  if (!data || typeof data !== "object") {
2563
2583
  throw createInvalidInputError("data must be an object");
@@ -5774,6 +5794,26 @@ var QueryNameMapper = class extends OperationNodeTransformer {
5774
5794
  const mappedName = this.mapFieldName(scope.model, node.column.name);
5775
5795
  return ColumnNode2.create(mappedName);
5776
5796
  }
5797
+ transformBinaryOperation(node) {
5798
+ if (ReferenceNode2.is(node.leftOperand) && ColumnNode2.is(node.leftOperand.column) && (ValueNode.is(node.rightOperand) || PrimitiveValueListNode.is(node.rightOperand))) {
5799
+ const columnNode = node.leftOperand.column;
5800
+ const resolvedScope = this.resolveFieldFromScopes(columnNode.column.name, node.leftOperand.table?.table.identifier.name);
5801
+ if (resolvedScope?.model) {
5802
+ const valueNode = node.rightOperand;
5803
+ let resultValue = valueNode;
5804
+ if (ValueNode.is(valueNode)) {
5805
+ resultValue = this.processEnumMappingForValue(resolvedScope.model, columnNode, valueNode);
5806
+ } else if (PrimitiveValueListNode.is(valueNode)) {
5807
+ resultValue = PrimitiveValueListNode.create(this.processEnumMappingForValues(resolvedScope.model, valueNode.values.map(() => columnNode), valueNode.values));
5808
+ }
5809
+ return super.transformBinaryOperation({
5810
+ ...node,
5811
+ rightOperand: resultValue
5812
+ });
5813
+ }
5814
+ }
5815
+ return super.transformBinaryOperation(node);
5816
+ }
5777
5817
  transformUpdateQuery(node) {
5778
5818
  if (!node.table) {
5779
5819
  return super.transformUpdateQuery(node);