@zenstackhq/orm 3.3.2 → 3.3.3

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
@@ -1332,7 +1332,7 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
1332
1332
  /**
1333
1333
  * Builds an expression that checks if an array contains a single value.
1334
1334
  */
1335
- abstract buildArrayContains(field: Expression<unknown>, value: Expression<unknown>): AliasableExpression<SqlBool>;
1335
+ abstract buildArrayContains(field: Expression<unknown>, value: Expression<unknown>, elemType?: string): AliasableExpression<SqlBool>;
1336
1336
  /**
1337
1337
  * Builds an expression that checks if an array contains all values from another array.
1338
1338
  */
package/dist/index.d.ts CHANGED
@@ -1332,7 +1332,7 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
1332
1332
  /**
1333
1333
  * Builds an expression that checks if an array contains a single value.
1334
1334
  */
1335
- abstract buildArrayContains(field: Expression<unknown>, value: Expression<unknown>): AliasableExpression<SqlBool>;
1335
+ abstract buildArrayContains(field: Expression<unknown>, value: Expression<unknown>, elemType?: string): AliasableExpression<SqlBool>;
1336
1336
  /**
1337
1337
  * Builds an expression that checks if an array contains all values from another array.
1338
1338
  */
package/dist/index.js CHANGED
@@ -927,7 +927,7 @@ var BaseCrudDialect = class {
927
927
  break;
928
928
  }
929
929
  case "has": {
930
- clauses.push(this.buildArrayContains(receiver, this.eb.val(value)));
930
+ clauses.push(this.buildArrayContains(receiver, this.eb.val(value), fieldType));
931
931
  break;
932
932
  }
933
933
  case "hasEvery": {
@@ -1774,7 +1774,7 @@ var MySqlCrudDialect = class extends LateralJoinDialectBase {
1774
1774
  buildArrayValue(values, _elemType) {
1775
1775
  return new ExpressionWrapper(ValueListNode.create(values.map((v) => v.toOperationNode())));
1776
1776
  }
1777
- buildArrayContains(_field, _value) {
1777
+ buildArrayContains(_field, _value, _elemType) {
1778
1778
  throw createNotSupportedError("MySQL does not support native array operations");
1779
1779
  }
1780
1780
  buildArrayHasEvery(_field, _values) {
@@ -2031,8 +2031,15 @@ var PostgresCrudDialect = class _PostgresCrudDialect extends LateralJoinDialectB
2031
2031
  const mappedType = this.getSqlType(elemType);
2032
2032
  return this.eb.cast(arr, sql3`${sql3.raw(mappedType)}[]`);
2033
2033
  }
2034
- buildArrayContains(field, value) {
2035
- return this.eb(field, "@>", sql3`ARRAY[${value}]`);
2034
+ buildArrayContains(field, value, elemType) {
2035
+ const arrayExpr = sql3`ARRAY[${value}]`;
2036
+ if (elemType) {
2037
+ const mappedType = this.getSqlType(elemType);
2038
+ const typedArray = this.eb.cast(arrayExpr, sql3`${sql3.raw(mappedType)}[]`);
2039
+ return this.eb(field, "@>", typedArray);
2040
+ } else {
2041
+ return this.eb(field, "@>", arrayExpr);
2042
+ }
2036
2043
  }
2037
2044
  buildArrayHasEvery(field, values) {
2038
2045
  return this.eb(field, "@>", values);
@@ -2368,7 +2375,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
2368
2375
  buildArrayValue(values, _elemType) {
2369
2376
  return new ExpressionWrapper2(ValueListNode2.create(values.map((v) => v.toOperationNode())));
2370
2377
  }
2371
- buildArrayContains(_field, _value) {
2378
+ buildArrayContains(_field, _value, _elemType) {
2372
2379
  throw createNotSupportedError("SQLite does not support native array operations");
2373
2380
  }
2374
2381
  buildArrayHasEvery(_field, _values) {
@@ -8379,7 +8386,7 @@ var SchemaDbPusher = class {
8379
8386
  return "integer";
8380
8387
  }
8381
8388
  get floatType() {
8382
- return match17(this.schema.provider.type).with("mysql", () => sql7.raw("double")).otherwise(() => "real");
8389
+ return match17(this.schema.provider.type).with("postgresql", () => "double precision").with("mysql", () => sql7.raw("double")).otherwise(() => "real");
8383
8390
  }
8384
8391
  get bigIntType() {
8385
8392
  return "bigint";