@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/{contract-XFKcwhq7.d.cts → contract-D8U59Syb.d.cts} +1 -0
- package/dist/{contract-XFKcwhq7.d.ts → contract-D8U59Syb.d.ts} +1 -0
- package/dist/index.cjs +22 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +50 -48
- package/dist/index.js.map +1 -1
- package/dist/plugins/policy/index.cjs +14 -10
- package/dist/plugins/policy/index.cjs.map +1 -1
- package/dist/plugins/policy/index.d.cts +1 -1
- package/dist/plugins/policy/index.d.ts +1 -1
- package/dist/plugins/policy/index.js +17 -13
- package/dist/plugins/policy/index.js.map +1 -1
- package/package.json +8 -8
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as ClientConstructor } from './contract-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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 =
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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) =>
|
|
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
|
-
|
|
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`) :
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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(
|
|
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) =>
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
3404
|
-
const fieldRef =
|
|
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 =
|
|
3414
|
-
const fieldRef =
|
|
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 =
|
|
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 {
|
|
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) =>
|
|
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(() =>
|
|
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(
|
|
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
|
|
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
|
-
|
|
6152
|
+
sql7.lit("%"),
|
|
6151
6153
|
search2,
|
|
6152
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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), "=",
|
|
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", () =>
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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" ?
|
|
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
|
|
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
|
|
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
|
|
6782
|
+
const result = await sql9(query, ...values).execute(this.kysely);
|
|
6781
6783
|
return result.rows;
|
|
6782
6784
|
});
|
|
6783
6785
|
}
|