@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.cjs CHANGED
@@ -598,6 +598,7 @@ __name(extractFieldName, "extractFieldName");
598
598
  // src/client/crud/operations/base.ts
599
599
  var import_cuid2 = require("@paralleldrive/cuid2");
600
600
  var import_common_helpers5 = require("@zenstackhq/common-helpers");
601
+ var import_cuid = __toESM(require("cuid"), 1);
601
602
  var import_kysely5 = require("kysely");
602
603
  var import_nanoid = require("nanoid");
603
604
  var import_ts_pattern6 = require("ts-pattern");
@@ -2583,7 +2584,20 @@ var BaseOperationHandler = class {
2583
2584
  }
2584
2585
  evalGenerator(defaultValue) {
2585
2586
  if (schema_exports.ExpressionUtils.isCall(defaultValue)) {
2586
- return (0, import_ts_pattern6.match)(defaultValue.function).with("cuid", () => (0, import_cuid2.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" ? (0, import_nanoid.nanoid)(defaultValue.args[0].value) : (0, import_nanoid.nanoid)()).with("ulid", () => (0, import_ulid.ulid)()).otherwise(() => void 0);
2587
+ const firstArgVal = defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args[0]) ? defaultValue.args[0].value : void 0;
2588
+ return (0, import_ts_pattern6.match)(defaultValue.function).with("cuid", () => {
2589
+ const version = firstArgVal;
2590
+ const generated = version === 2 ? (0, import_cuid2.createId)() : (0, import_cuid.default)();
2591
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2592
+ }).with("uuid", () => {
2593
+ const version = firstArgVal;
2594
+ const generated = version === 7 ? uuid.v7() : uuid.v4();
2595
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2596
+ }).with("nanoid", () => {
2597
+ const length = firstArgVal;
2598
+ const generated = typeof length === "number" ? (0, import_nanoid.nanoid)(length) : (0, import_nanoid.nanoid)();
2599
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2600
+ }).with("ulid", () => this.formatGeneratedValue((0, import_ulid.ulid)(), defaultValue.args?.[0])).otherwise(() => void 0);
2587
2601
  } else if (schema_exports.ExpressionUtils.isMember(defaultValue) && schema_exports.ExpressionUtils.isCall(defaultValue.receiver) && defaultValue.receiver.function === "auth") {
2588
2602
  let val = this.client.$auth;
2589
2603
  for (const member of defaultValue.members) {
@@ -2594,6 +2608,12 @@ var BaseOperationHandler = class {
2594
2608
  return void 0;
2595
2609
  }
2596
2610
  }
2611
+ formatGeneratedValue(generated, formatExpr) {
2612
+ if (!formatExpr || !schema_exports.ExpressionUtils.isLiteral(formatExpr) || typeof formatExpr.value !== "string") {
2613
+ return generated;
2614
+ }
2615
+ return formatExpr.value.replace(/(?<!\\)%s/g, generated).replace(/\\%s/g, "%s");
2616
+ }
2597
2617
  async update(kysely, model, where, data, fromRelation, allowRelationUpdate = true, throwIfNotFound = true, fieldsToReturn) {
2598
2618
  if (!data || typeof data !== "object") {
2599
2619
  throw createInvalidInputError("data must be an object");
@@ -5810,6 +5830,26 @@ var QueryNameMapper = class extends import_kysely6.OperationNodeTransformer {
5810
5830
  const mappedName = this.mapFieldName(scope.model, node.column.name);
5811
5831
  return import_kysely6.ColumnNode.create(mappedName);
5812
5832
  }
5833
+ transformBinaryOperation(node) {
5834
+ if (import_kysely6.ReferenceNode.is(node.leftOperand) && import_kysely6.ColumnNode.is(node.leftOperand.column) && (import_kysely6.ValueNode.is(node.rightOperand) || import_kysely6.PrimitiveValueListNode.is(node.rightOperand))) {
5835
+ const columnNode = node.leftOperand.column;
5836
+ const resolvedScope = this.resolveFieldFromScopes(columnNode.column.name, node.leftOperand.table?.table.identifier.name);
5837
+ if (resolvedScope?.model) {
5838
+ const valueNode = node.rightOperand;
5839
+ let resultValue = valueNode;
5840
+ if (import_kysely6.ValueNode.is(valueNode)) {
5841
+ resultValue = this.processEnumMappingForValue(resolvedScope.model, columnNode, valueNode);
5842
+ } else if (import_kysely6.PrimitiveValueListNode.is(valueNode)) {
5843
+ resultValue = import_kysely6.PrimitiveValueListNode.create(this.processEnumMappingForValues(resolvedScope.model, valueNode.values.map(() => columnNode), valueNode.values));
5844
+ }
5845
+ return super.transformBinaryOperation({
5846
+ ...node,
5847
+ rightOperand: resultValue
5848
+ });
5849
+ }
5850
+ }
5851
+ return super.transformBinaryOperation(node);
5852
+ }
5813
5853
  transformUpdateQuery(node) {
5814
5854
  if (!node.table) {
5815
5855
  return super.transformUpdateQuery(node);