@zenstackhq/runtime 3.0.0-alpha.20 → 3.0.0-alpha.21

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
@@ -1,5 +1,5 @@
1
- import { C as ClientConstructor } from './contract-XFKcwhq7.cjs';
2
- export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-XFKcwhq7.cjs';
1
+ import { C as ClientConstructor } from './contract-D8U59Syb.cjs';
2
+ export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-D8U59Syb.cjs';
3
3
  import 'decimal.js';
4
4
  import '@zenstackhq/sdk/schema';
5
5
  import 'kysely';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as ClientConstructor } from './contract-XFKcwhq7.js';
2
- export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-XFKcwhq7.js';
1
+ import { C as ClientConstructor } from './contract-D8U59Syb.js';
2
+ export { K as AggregateArgs, L as AggregateResult, B as BatchResult, i as BooleanFilter, h as BytesFilter, c as ClientContract, d as ClientOptions, G as CountArgs, H as CountResult, u as CreateArgs, w as CreateManyAndReturnArgs, v as CreateManyArgs, D as DateTimeFilter, A as DeleteArgs, E as DeleteManyArgs, F as FindArgs, s as FindFirstArgs, r as FindManyArgs, t as FindUniqueArgs, P as GroupByArgs, Q as GroupByResult, I as IncludeInput, J as JsonArray, a as JsonObject, b as JsonValue, M as ModelResult, k as NullsOrder, N as NumberFilter, m as OmitInput, O as OrderBy, n as SelectIncludeOmit, o as SelectInput, q as SelectSubset, S as SimplifiedModelResult, j as SortOrder, g as StringFilter, p as Subset, T as ToKysely, f as TypeDefResult, U as UpdateArgs, y as UpdateManyAndReturnArgs, x as UpdateManyArgs, z as UpsertArgs, W as WhereInput, l as WhereUniqueInput, e as definePlugin } from './contract-D8U59Syb.js';
3
3
  import 'decimal.js';
4
4
  import '@zenstackhq/sdk/schema';
5
5
  import 'kysely';
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ var __export = (target, all) => {
7
7
 
8
8
  // src/client/client-impl.ts
9
9
  import { invariant as invariant12, lowerCaseFirst as lowerCaseFirst2 } from "@zenstackhq/common-helpers";
10
- import { CompiledQuery, DefaultConnectionProvider, DefaultQueryExecutor as DefaultQueryExecutor2, Kysely, Log, sql as sql10 } from "kysely";
10
+ import { CompiledQuery, DefaultConnectionProvider, DefaultQueryExecutor as DefaultQueryExecutor2, Kysely, Log, sql as sql9 } from "kysely";
11
11
 
12
12
  // src/client/crud/operations/aggregate.ts
13
13
  import { sql as sql5 } from "kysely";
@@ -425,7 +425,7 @@ __name(aggregate, "aggregate");
425
425
  // src/client/crud/operations/base.ts
426
426
  import { createId } from "@paralleldrive/cuid2";
427
427
  import { invariant as invariant7, isPlainObject as isPlainObject3 } from "@zenstackhq/common-helpers";
428
- import { expressionBuilder as expressionBuilder2, sql as sql4 } from "kysely";
428
+ import { expressionBuilder as expressionBuilder3, sql as sql4 } from "kysely";
429
429
  import { nanoid } from "nanoid";
430
430
  import { inspect } from "util";
431
431
  import { match as match9 } from "ts-pattern";
@@ -481,7 +481,7 @@ var AGGREGATE_OPERATORS = [
481
481
 
482
482
  // src/client/crud/dialects/base.ts
483
483
  import { invariant, isPlainObject } from "@zenstackhq/common-helpers";
484
- import { sql } from "kysely";
484
+ import { expressionBuilder, sql } from "kysely";
485
485
  import { match as match2, P } from "ts-pattern";
486
486
 
487
487
  // src/utils/enumerate.ts
@@ -547,7 +547,7 @@ var BaseCrudDialect = class {
547
547
  if (fieldDef.relation) {
548
548
  result = this.and(eb, result, this.buildRelationFilter(eb, model, modelAlias, key, fieldDef, payload));
549
549
  } else {
550
- const fieldRef = buildFieldRef(this.schema, fieldDef.originModel ?? model, key, this.options, eb, fieldDef.originModel ?? modelAlias);
550
+ const fieldRef = this.fieldRef(fieldDef.originModel ?? model, key, eb, fieldDef.originModel ?? modelAlias);
551
551
  if (fieldDef.array) {
552
552
  result = this.and(eb, result, this.buildArrayFilter(eb, fieldRef, fieldDef, payload));
553
553
  } else {
@@ -870,7 +870,7 @@ var BaseCrudDialect = class {
870
870
  invariant(value && typeof value === "object", `invalid orderBy value for field "${field}"`);
871
871
  for (const [k, v] of Object.entries(value)) {
872
872
  invariant(v === "asc" || v === "desc", `invalid orderBy value for field "${field}"`);
873
- result = result.orderBy((eb) => aggregate(eb, sql.ref(`${modelAlias}.${k}`), field), sql.raw(this.negateSort(v, negated)));
873
+ result = result.orderBy((eb) => aggregate(eb, this.fieldRef(model, k, eb, modelAlias), field), sql.raw(this.negateSort(v, negated)));
874
874
  }
875
875
  continue;
876
876
  }
@@ -879,7 +879,7 @@ var BaseCrudDialect = class {
879
879
  invariant(value && typeof value === "object", 'invalid orderBy value for field "_count"');
880
880
  for (const [k, v] of Object.entries(value)) {
881
881
  invariant(v === "asc" || v === "desc", `invalid orderBy value for field "${field}"`);
882
- result = result.orderBy((eb) => eb.fn.count(sql.ref(k)), sql.raw(this.negateSort(v, negated)));
882
+ result = result.orderBy((eb) => eb.fn.count(this.fieldRef(model, k, eb, modelAlias)), sql.raw(this.negateSort(v, negated)));
883
883
  }
884
884
  continue;
885
885
  }
@@ -888,10 +888,11 @@ var BaseCrudDialect = class {
888
888
  }
889
889
  const fieldDef = requireField(this.schema, model, field);
890
890
  if (!fieldDef.relation) {
891
+ const fieldRef = this.fieldRef(model, field, expressionBuilder(), modelAlias);
891
892
  if (value === "asc" || value === "desc") {
892
- result = result.orderBy(sql.ref(`${modelAlias}.${field}`), this.negateSort(value, negated));
893
+ result = result.orderBy(fieldRef, this.negateSort(value, negated));
893
894
  } else if (value && typeof value === "object" && "nulls" in value && "sort" in value && (value.sort === "asc" || value.sort === "desc") && (value.nulls === "first" || value.nulls === "last")) {
894
- result = result.orderBy(sql.ref(`${modelAlias}.${field}`), sql.raw(`${this.negateSort(value.sort, negated)} nulls ${value.nulls}`));
895
+ result = result.orderBy(fieldRef, sql.raw(`${this.negateSort(value.sort, negated)} nulls ${value.nulls}`));
895
896
  }
896
897
  } else {
897
898
  const relationModel = fieldDef.type;
@@ -953,7 +954,7 @@ var BaseCrudDialect = class {
953
954
  buildSelectField(query, model, modelAlias, field) {
954
955
  const fieldDef = requireField(this.schema, model, field);
955
956
  if (fieldDef.computed) {
956
- return query.select((eb) => buildFieldRef(this.schema, model, field, this.options, eb).as(field));
957
+ return query.select((eb) => this.fieldRef(model, field, eb, modelAlias).as(field));
957
958
  } else if (!fieldDef.originModel) {
958
959
  return query.select(sql.ref(`${modelAlias}.${field}`).as(field));
959
960
  } else {
@@ -1044,6 +1045,9 @@ var BaseCrudDialect = class {
1044
1045
  not(eb, ...args) {
1045
1046
  return eb.not(this.and(eb, ...args));
1046
1047
  }
1048
+ fieldRef(model, field, eb, modelAlias) {
1049
+ return buildFieldRef(this.schema, model, field, this.options, eb, modelAlias);
1050
+ }
1047
1051
  };
1048
1052
 
1049
1053
  // src/client/crud/dialects/postgresql.ts
@@ -1137,7 +1141,7 @@ var PostgresCrudDialect = class extends BaseCrudDialect {
1137
1141
  if (payload === true || !payload.select) {
1138
1142
  objArgs.push(...Object.entries(relationModelDef.fields).filter(([, value]) => !value.relation).filter(([name]) => !(typeof payload === "object" && payload.omit?.[name] === true)).map(([field]) => [
1139
1143
  sql2.lit(field),
1140
- buildFieldRef(this.schema, relationModel, field, this.options, eb)
1144
+ this.fieldRef(relationModel, field, eb)
1141
1145
  ]).flatMap((v) => v));
1142
1146
  } else if (payload.select) {
1143
1147
  objArgs.push(...Object.entries(payload.select).filter(([, value]) => value).map(([field, value]) => {
@@ -1149,7 +1153,7 @@ var PostgresCrudDialect = class extends BaseCrudDialect {
1149
1153
  ];
1150
1154
  } else {
1151
1155
  const fieldDef = requireField(this.schema, relationModel, field);
1152
- const fieldValue = fieldDef.relation ? eb.ref(`${parentAlias}$${relationField}$${field}.$j`) : buildFieldRef(this.schema, relationModel, field, this.options, eb);
1156
+ const fieldValue = fieldDef.relation ? eb.ref(`${parentAlias}$${relationField}$${field}.$j`) : this.fieldRef(relationModel, field, eb);
1153
1157
  return [
1154
1158
  sql2.lit(field),
1155
1159
  fieldValue
@@ -1300,7 +1304,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
1300
1304
  if (payload === true || !payload.select) {
1301
1305
  objArgs.push(...Object.entries(relationModelDef.fields).filter(([, value]) => !value.relation).filter(([name]) => !(typeof payload === "object" && payload.omit?.[name] === true)).map(([field]) => [
1302
1306
  sql3.lit(field),
1303
- buildFieldRef(this.schema, relationModel, field, this.options, eb)
1307
+ this.fieldRef(relationModel, field, eb)
1304
1308
  ]).flatMap((v) => v));
1305
1309
  } else if (payload.select) {
1306
1310
  objArgs.push(...Object.entries(payload.select).filter(([, value]) => value).map(([field, value]) => {
@@ -1321,7 +1325,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
1321
1325
  } else {
1322
1326
  return [
1323
1327
  sql3.lit(field),
1324
- buildFieldRef(this.schema, relationModel, field, this.options, eb)
1328
+ this.fieldRef(relationModel, field, eb)
1325
1329
  ];
1326
1330
  }
1327
1331
  }
@@ -1710,7 +1714,7 @@ var ColumnCollector = class extends DefaultOperationNodeVisitor {
1710
1714
 
1711
1715
  // src/plugins/policy/expression-transformer.ts
1712
1716
  import { invariant as invariant5 } from "@zenstackhq/common-helpers";
1713
- import { AliasNode as AliasNode2, BinaryOperationNode as BinaryOperationNode2, ColumnNode, expressionBuilder, FromNode, FunctionNode as FunctionNode2, IdentifierNode, OperatorNode as OperatorNode2, ReferenceNode as ReferenceNode2, SelectionNode, SelectQueryNode, TableNode as TableNode2, ValueListNode, ValueNode as ValueNode2, WhereNode } from "kysely";
1717
+ import { AliasNode as AliasNode2, BinaryOperationNode as BinaryOperationNode2, ColumnNode, expressionBuilder as expressionBuilder2, FromNode, FunctionNode as FunctionNode2, IdentifierNode, OperatorNode as OperatorNode2, ReferenceNode as ReferenceNode2, SelectionNode, SelectQueryNode, TableNode as TableNode2, ValueListNode, ValueNode as ValueNode2, WhereNode } from "kysely";
1714
1718
  import { match as match7 } from "ts-pattern";
1715
1719
 
1716
1720
  // src/plugins/policy/expression-evaluator.ts
@@ -2067,7 +2071,7 @@ var ExpressionTransformer = class {
2067
2071
  if (!func) {
2068
2072
  throw new QueryError(`Function not implemented: ${expr2.function}`);
2069
2073
  }
2070
- const eb = expressionBuilder();
2074
+ const eb = expressionBuilder2();
2071
2075
  return func(eb, (expr2.args ?? []).map((arg) => this.transformCallArg(eb, arg, context)), {
2072
2076
  dialect: this.dialect,
2073
2077
  model: context.model,
@@ -2708,7 +2712,7 @@ var BaseOperationHandler = class {
2708
2712
  return this.executeQueryTakeFirst(kysely, query, "exists");
2709
2713
  }
2710
2714
  async read(kysely, model, args) {
2711
- let query = this.dialect.buildSelectModel(expressionBuilder2(), model);
2715
+ let query = this.dialect.buildSelectModel(expressionBuilder3(), model);
2712
2716
  if (args?.where) {
2713
2717
  query = query.where((eb) => this.dialect.buildFilter(eb, model, model, args?.where));
2714
2718
  }
@@ -2728,7 +2732,7 @@ var BaseOperationHandler = class {
2728
2732
  query = query.distinctOn(distinct.map((f) => sql4.ref(`${model}.${f}`)));
2729
2733
  } else {
2730
2734
  inMemoryDistinct = distinct;
2731
- query = distinct.reduce((acc, field) => acc.select((eb) => buildFieldRef(this.schema, model, field, this.options, eb).as(`$distinct$${field}`)), query);
2735
+ query = distinct.reduce((acc, field) => acc.select((eb) => this.dialect.fieldRef(model, field, eb).as(`$distinct$${field}`)), query);
2732
2736
  }
2733
2737
  }
2734
2738
  if (args && "select" in args && args.select) {
@@ -2820,7 +2824,7 @@ ${compiled.parameters.map((p) => inspect(p)).join("\n")}`;
2820
2824
  orderBy = makeDefaultOrderBy(this.schema, model);
2821
2825
  }
2822
2826
  const orderByItems = ensureArray(orderBy).flatMap((obj) => Object.entries(obj));
2823
- const eb = expressionBuilder2();
2827
+ const eb = expressionBuilder3();
2824
2828
  const cursorFilter = this.dialect.buildFilter(eb, model, model, cursor);
2825
2829
  let result = query;
2826
2830
  const filters = [];
@@ -2979,7 +2983,7 @@ ${compiled.parameters.map((p) => inspect(p)).join("\n")}`;
2979
2983
  ]).doNothing()).execute();
2980
2984
  return result[0];
2981
2985
  } else {
2982
- const eb = expressionBuilder2();
2986
+ const eb = expressionBuilder3();
2983
2987
  const result = await kysely.deleteFrom(joinTable).where(eb(`${joinTable}.A`, "=", sortedRecords[0].entity[firstIds[0]])).where(eb(`${joinTable}.B`, "=", sortedRecords[1].entity[secondIds[0]])).execute();
2984
2988
  return result[0];
2985
2989
  }
@@ -2989,7 +2993,7 @@ ${compiled.parameters.map((p) => inspect(p)).join("\n")}`;
2989
2993
  const parentId = Object.values(parentIds)[0];
2990
2994
  const m2m = getManyToManyRelation(this.schema, model, field);
2991
2995
  invariant7(m2m, "not a many-to-many relation");
2992
- const eb = expressionBuilder2();
2996
+ const eb = expressionBuilder3();
2993
2997
  return kysely.deleteFrom(m2m.joinTable).where(eb(`${m2m.joinTable}.${m2m.parentFkName}`, "=", parentId)).execute();
2994
2998
  }
2995
2999
  async processOwnedRelationForCreate(kysely, relationField, payload) {
@@ -3400,8 +3404,8 @@ ${compiled.parameters.map((p) => inspect(p)).join("\n")}`;
3400
3404
  invariant7(Object.keys(payload).length === 1, 'Only one of "set", "increment", "decrement", "multiply", or "divide" can be provided');
3401
3405
  const key = Object.keys(payload)[0];
3402
3406
  const value = this.dialect.transformPrimitive(payload[key], fieldDef.type, false);
3403
- const eb = expressionBuilder2();
3404
- const fieldRef = buildFieldRef(this.schema, model, field, this.options, eb);
3407
+ const eb = expressionBuilder3();
3408
+ const fieldRef = this.dialect.fieldRef(model, field, eb);
3405
3409
  return match9(key).with("set", () => value).with("increment", () => eb(fieldRef, "+", value)).with("decrement", () => eb(fieldRef, "-", value)).with("multiply", () => eb(fieldRef, "*", value)).with("divide", () => eb(fieldRef, "/", value)).otherwise(() => {
3406
3410
  throw new InternalError(`Invalid incremental update operation: ${key}`);
3407
3411
  });
@@ -3410,8 +3414,8 @@ ${compiled.parameters.map((p) => inspect(p)).join("\n")}`;
3410
3414
  invariant7(Object.keys(payload).length === 1, 'Only one of "set", "push" can be provided');
3411
3415
  const key = Object.keys(payload)[0];
3412
3416
  const value = this.dialect.transformPrimitive(payload[key], fieldDef.type, true);
3413
- const eb = expressionBuilder2();
3414
- const fieldRef = buildFieldRef(this.schema, model, field, this.options, eb);
3417
+ const eb = expressionBuilder3();
3418
+ const fieldRef = this.dialect.fieldRef(model, field, eb);
3415
3419
  return match9(key).with("set", () => value).with("push", () => {
3416
3420
  return eb(fieldRef, "||", eb.val(ensureArray(value)));
3417
3421
  }).otherwise(() => {
@@ -3697,7 +3701,7 @@ ${compiled.parameters.map((p) => inspect(p)).join("\n")}`;
3697
3701
  await Promise.all(actions);
3698
3702
  } else {
3699
3703
  const { ownedByModel, keyPairs } = getRelationForeignKeyFieldPairs(this.schema, fromRelation.model, fromRelation.field);
3700
- const eb = expressionBuilder2();
3704
+ const eb = expressionBuilder3();
3701
3705
  if (ownedByModel) {
3702
3706
  invariant7(disconnectConditions.length === 1, "only one entity can be disconnected");
3703
3707
  const condition = disconnectConditions[0];
@@ -4263,7 +4267,7 @@ var FindOperationHandler = class extends BaseOperationHandler {
4263
4267
  };
4264
4268
 
4265
4269
  // src/client/crud/operations/group-by.ts
4266
- import { sql as sql7 } from "kysely";
4270
+ import { expressionBuilder as expressionBuilder4 } from "kysely";
4267
4271
  import { match as match13 } from "ts-pattern";
4268
4272
  var GroupByOperationHandler = class extends BaseOperationHandler {
4269
4273
  static {
@@ -4285,10 +4289,11 @@ var GroupByOperationHandler = class extends BaseOperationHandler {
4285
4289
  subQuery = this.dialect.buildOrderBy(subQuery, this.model, this.model, void 0, skip !== void 0 || take !== void 0, negateOrderBy);
4286
4290
  return subQuery.as("$sub");
4287
4291
  });
4292
+ const fieldRef = /* @__PURE__ */ __name((field) => this.dialect.fieldRef(this.model, field, expressionBuilder4(), "$sub"), "fieldRef");
4288
4293
  const bys = typeof parsedArgs.by === "string" ? [
4289
4294
  parsedArgs.by
4290
4295
  ] : parsedArgs.by;
4291
- query = query.groupBy(bys.map((by) => sql7.ref(`$sub.${by}`)));
4296
+ query = query.groupBy(bys.map((by) => fieldRef(by)));
4292
4297
  if (parsedArgs.orderBy) {
4293
4298
  query = this.dialect.buildOrderBy(query, this.model, "$sub", parsedArgs.orderBy, false, false);
4294
4299
  }
@@ -4296,7 +4301,7 @@ var GroupByOperationHandler = class extends BaseOperationHandler {
4296
4301
  query = query.having((eb) => this.dialect.buildFilter(eb, this.model, "$sub", parsedArgs.having));
4297
4302
  }
4298
4303
  for (const by of bys) {
4299
- query = query.select(() => sql7.ref(`$sub.${by}`).as(by));
4304
+ query = query.select(() => fieldRef(by).as(by));
4300
4305
  }
4301
4306
  for (const [key, value] of Object.entries(parsedArgs)) {
4302
4307
  switch (key) {
@@ -4309,7 +4314,7 @@ var GroupByOperationHandler = class extends BaseOperationHandler {
4309
4314
  if (field === "_all") {
4310
4315
  query = query.select((eb) => eb.cast(eb.fn.countAll(), "integer").as(`_count._all`));
4311
4316
  } else {
4312
- query = query.select((eb) => eb.cast(eb.fn.count(sql7.ref(`$sub.${field}`)), "integer").as(`${key}.${field}`));
4317
+ query = query.select((eb) => eb.cast(eb.fn.count(fieldRef(field)), "integer").as(`${key}.${field}`));
4313
4318
  }
4314
4319
  }
4315
4320
  });
@@ -4322,10 +4327,7 @@ var GroupByOperationHandler = class extends BaseOperationHandler {
4322
4327
  case "_min": {
4323
4328
  Object.entries(value).forEach(([field, val]) => {
4324
4329
  if (val === true) {
4325
- query = query.select((eb) => {
4326
- const fn = match13(key).with("_sum", () => eb.fn.sum).with("_avg", () => eb.fn.avg).with("_max", () => eb.fn.max).with("_min", () => eb.fn.min).exhaustive();
4327
- return fn(sql7.ref(`$sub.${field}`)).as(`${key}.${field}`);
4328
- });
4330
+ query = query.select((eb) => aggregate(eb, fieldRef(field), key).as(`${key}.${field}`));
4329
4331
  }
4330
4332
  });
4331
4333
  break;
@@ -6136,7 +6138,7 @@ __export(functions_exports, {
6136
6138
  startsWith: () => startsWith
6137
6139
  });
6138
6140
  import { invariant as invariant9, lowerCaseFirst, upperCaseFirst } from "@zenstackhq/common-helpers";
6139
- import { sql as sql8, ValueNode as ValueNode4 } from "kysely";
6141
+ import { sql as sql7, ValueNode as ValueNode4 } from "kysely";
6140
6142
  import { match as match17 } from "ts-pattern";
6141
6143
  var contains = /* @__PURE__ */ __name((eb, args) => {
6142
6144
  const [field, search2, caseInsensitive = false] = args;
@@ -6147,9 +6149,9 @@ var contains = /* @__PURE__ */ __name((eb, args) => {
6147
6149
  throw new Error('"search" parameter is required');
6148
6150
  }
6149
6151
  const searchExpr = eb.fn("CONCAT", [
6150
- sql8.lit("%"),
6152
+ sql7.lit("%"),
6151
6153
  search2,
6152
- sql8.lit("%")
6154
+ sql7.lit("%")
6153
6155
  ]);
6154
6156
  return eb(field, caseInsensitive ? "ilike" : "like", searchExpr);
6155
6157
  }, "contains");
@@ -6166,7 +6168,7 @@ var startsWith = /* @__PURE__ */ __name((eb, args) => {
6166
6168
  }
6167
6169
  return eb(field, "like", eb.fn("CONCAT", [
6168
6170
  search2,
6169
- sql8.lit("%")
6171
+ sql7.lit("%")
6170
6172
  ]));
6171
6173
  }, "startsWith");
6172
6174
  var endsWith = /* @__PURE__ */ __name((eb, args) => {
@@ -6178,7 +6180,7 @@ var endsWith = /* @__PURE__ */ __name((eb, args) => {
6178
6180
  throw new Error('"search" parameter is required');
6179
6181
  }
6180
6182
  return eb(field, "like", eb.fn("CONCAT", [
6181
- sql8.lit("%"),
6183
+ sql7.lit("%"),
6182
6184
  search2
6183
6185
  ]));
6184
6186
  }, "endsWith");
@@ -6219,10 +6221,10 @@ var isEmpty = /* @__PURE__ */ __name((eb, args, { dialect }) => {
6219
6221
  if (!field) {
6220
6222
  throw new Error('"field" parameter is required');
6221
6223
  }
6222
- return eb(dialect.buildArrayLength(eb, field), "=", sql8.lit(0));
6224
+ return eb(dialect.buildArrayLength(eb, field), "=", sql7.lit(0));
6223
6225
  }, "isEmpty");
6224
6226
  var now = /* @__PURE__ */ __name((eb, _args, { dialect }) => {
6225
- return match17(dialect.provider).with("postgresql", () => eb.fn("now")).with("sqlite", () => sql8.raw("CURRENT_TIMESTAMP")).exhaustive();
6227
+ return match17(dialect.provider).with("postgresql", () => eb.fn("now")).with("sqlite", () => sql7.raw("CURRENT_TIMESTAMP")).exhaustive();
6226
6228
  }, "now");
6227
6229
  var currentModel = /* @__PURE__ */ __name((_eb, args, { model }) => {
6228
6230
  let result = model;
@@ -6230,7 +6232,7 @@ var currentModel = /* @__PURE__ */ __name((_eb, args, { model }) => {
6230
6232
  if (casing) {
6231
6233
  result = processCasing(casing, result, model);
6232
6234
  }
6233
- return sql8.lit(result);
6235
+ return sql7.lit(result);
6234
6236
  }, "currentModel");
6235
6237
  var currentOperation = /* @__PURE__ */ __name((_eb, args, { operation }) => {
6236
6238
  let result = operation;
@@ -6238,7 +6240,7 @@ var currentOperation = /* @__PURE__ */ __name((_eb, args, { operation }) => {
6238
6240
  if (casing) {
6239
6241
  result = processCasing(casing, result, operation);
6240
6242
  }
6241
- return sql8.lit(result);
6243
+ return sql7.lit(result);
6242
6244
  }, "currentOperation");
6243
6245
  function processCasing(casing, result, model) {
6244
6246
  const opNode = casing.toOperationNode();
@@ -6252,7 +6254,7 @@ __name(processCasing, "processCasing");
6252
6254
 
6253
6255
  // src/client/helpers/schema-db-pusher.ts
6254
6256
  import { invariant as invariant10 } from "@zenstackhq/common-helpers";
6255
- import { sql as sql9 } from "kysely";
6257
+ import { sql as sql8 } from "kysely";
6256
6258
  import { match as match18 } from "ts-pattern";
6257
6259
  var SchemaDbPusher = class {
6258
6260
  static {
@@ -6331,7 +6333,7 @@ var SchemaDbPusher = class {
6331
6333
  if (fieldDef.default !== void 0) {
6332
6334
  if (typeof fieldDef.default === "object" && "kind" in fieldDef.default) {
6333
6335
  if (ExpressionUtils.isCall(fieldDef.default) && fieldDef.default.function === "now") {
6334
- col = col.defaultTo(sql9`CURRENT_TIMESTAMP`);
6336
+ col = col.defaultTo(sql8`CURRENT_TIMESTAMP`);
6335
6337
  }
6336
6338
  } else {
6337
6339
  col = col.defaultTo(fieldDef.default);
@@ -6351,7 +6353,7 @@ var SchemaDbPusher = class {
6351
6353
  }
6352
6354
  mapFieldType(fieldDef) {
6353
6355
  if (this.schema.enums?.[fieldDef.type]) {
6354
- return this.schema.provider.type === "postgresql" ? sql9.ref(fieldDef.type) : "text";
6356
+ return this.schema.provider.type === "postgresql" ? sql8.ref(fieldDef.type) : "text";
6355
6357
  }
6356
6358
  if (this.isAutoIncrement(fieldDef) && this.schema.provider.type === "postgresql") {
6357
6359
  return "serial";
@@ -6361,7 +6363,7 @@ var SchemaDbPusher = class {
6361
6363
  throw new Error(`Unsupported field type: ${type}`);
6362
6364
  });
6363
6365
  if (fieldDef.array) {
6364
- return sql9.raw(`${result}[]`);
6366
+ return sql8.raw(`${result}[]`);
6365
6367
  } else {
6366
6368
  return result;
6367
6369
  }
@@ -6764,7 +6766,7 @@ var ClientImpl = class _ClientImpl {
6764
6766
  }
6765
6767
  $executeRaw(query, ...values) {
6766
6768
  return createZenStackPromise(async () => {
6767
- const result = await sql10(query, ...values).execute(this.kysely);
6769
+ const result = await sql9(query, ...values).execute(this.kysely);
6768
6770
  return Number(result.numAffectedRows ?? 0);
6769
6771
  });
6770
6772
  }
@@ -6777,7 +6779,7 @@ var ClientImpl = class _ClientImpl {
6777
6779
  }
6778
6780
  $queryRaw(query, ...values) {
6779
6781
  return createZenStackPromise(async () => {
6780
- const result = await sql10(query, ...values).execute(this.kysely);
6782
+ const result = await sql9(query, ...values).execute(this.kysely);
6781
6783
  return result.rows;
6782
6784
  });
6783
6785
  }