Skip to content

Commit c10e48f

Browse files
authored
Merge pull request #157 from zenstackhq/dev
merge dev to main (v3.0.0-alpha.21)
2 parents 9b36641 + c28fe54 commit c10e48f

File tree

24 files changed

+98
-66
lines changed

24 files changed

+98
-66
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zenstack-v3",
3-
"version": "3.0.0-alpha.20",
3+
"version": "3.0.0-alpha.21",
44
"description": "ZenStack",
55
"packageManager": "[email protected]",
66
"scripts": {

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"publisher": "zenstack",
44
"displayName": "ZenStack CLI",
55
"description": "FullStack database toolkit with built-in access control and automatic API generation.",
6-
"version": "3.0.0-alpha.20",
6+
"version": "3.0.0-alpha.21",
77
"type": "module",
88
"author": {
99
"name": "ZenStack Team"

packages/common-helpers/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/common-helpers",
3-
"version": "3.0.0-alpha.20",
3+
"version": "3.0.0-alpha.21",
44
"description": "ZenStack Common Helpers",
55
"type": "module",
66
"scripts": {

packages/create-zenstack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "create-zenstack",
3-
"version": "3.0.0-alpha.20",
3+
"version": "3.0.0-alpha.21",
44
"description": "Create a new ZenStack project",
55
"type": "module",
66
"scripts": {

packages/dialects/sql.js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/kysely-sql-js",
3-
"version": "3.0.0-alpha.20",
3+
"version": "3.0.0-alpha.21",
44
"description": "Kysely dialect for sql.js",
55
"type": "module",
66
"scripts": {

packages/eslint-config/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/eslint-config",
3-
"version": "3.0.0-alpha.20",
3+
"version": "3.0.0-alpha.21",
44
"type": "module",
55
"private": true,
66
"license": "MIT"

packages/ide/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "zenstack",
33
"publisher": "zenstack",
4-
"version": "3.0.0-alpha.20",
4+
"version": "3.0.0-alpha.21",
55
"displayName": "ZenStack Language Tools",
66
"description": "VSCode extension for ZenStack ZModel language",
77
"private": true,

packages/language/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@zenstackhq/language",
33
"description": "ZenStack ZModel language specification",
4-
"version": "3.0.0-alpha.20",
4+
"version": "3.0.0-alpha.21",
55
"license": "MIT",
66
"author": "ZenStack Team",
77
"files": [

packages/runtime/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/runtime",
3-
"version": "3.0.0-alpha.20",
3+
"version": "3.0.0-alpha.21",
44
"description": "ZenStack Runtime",
55
"type": "module",
66
"scripts": {

packages/runtime/src/client/crud/dialects/base.ts

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { invariant, isPlainObject } from '@zenstackhq/common-helpers';
22
import type { Expression, ExpressionBuilder, ExpressionWrapper, SqlBool, ValueNode } from 'kysely';
3-
import { sql, type SelectQueryBuilder } from 'kysely';
3+
import { expressionBuilder, sql, type SelectQueryBuilder } from 'kysely';
44
import { match, P } from 'ts-pattern';
55
import type { BuiltinType, DataSourceProviderType, FieldDef, GetModels, SchemaDef } from '../../../schema';
66
import { enumerate } from '../../../utils/enumerate';
@@ -95,11 +95,9 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
9595
result = this.and(eb, result, this.buildRelationFilter(eb, model, modelAlias, key, fieldDef, payload));
9696
} else {
9797
// if the field is from a base model, build a reference from that model
98-
const fieldRef = buildFieldRef(
99-
this.schema,
98+
const fieldRef = this.fieldRef(
10099
fieldDef.originModel ?? model,
101100
key,
102-
this.options,
103101
eb,
104102
fieldDef.originModel ?? modelAlias,
105103
);
@@ -727,7 +725,8 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
727725
for (const [k, v] of Object.entries<string>(value)) {
728726
invariant(v === 'asc' || v === 'desc', `invalid orderBy value for field "${field}"`);
729727
result = result.orderBy(
730-
(eb) => aggregate(eb, sql.ref(`${modelAlias}.${k}`), field as AGGREGATE_OPERATORS),
728+
(eb) =>
729+
aggregate(eb, this.fieldRef(model, k, eb, modelAlias), field as AGGREGATE_OPERATORS),
731730
sql.raw(this.negateSort(v, negated)),
732731
);
733732
}
@@ -740,7 +739,7 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
740739
for (const [k, v] of Object.entries<string>(value)) {
741740
invariant(v === 'asc' || v === 'desc', `invalid orderBy value for field "${field}"`);
742741
result = result.orderBy(
743-
(eb) => eb.fn.count(sql.ref(k)),
742+
(eb) => eb.fn.count(this.fieldRef(model, k, eb, modelAlias)),
744743
sql.raw(this.negateSort(v, negated)),
745744
);
746745
}
@@ -753,8 +752,9 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
753752
const fieldDef = requireField(this.schema, model, field);
754753

755754
if (!fieldDef.relation) {
755+
const fieldRef = this.fieldRef(model, field, expressionBuilder(), modelAlias);
756756
if (value === 'asc' || value === 'desc') {
757-
result = result.orderBy(sql.ref(`${modelAlias}.${field}`), this.negateSort(value, negated));
757+
result = result.orderBy(fieldRef, this.negateSort(value, negated));
758758
} else if (
759759
value &&
760760
typeof value === 'object' &&
@@ -764,7 +764,7 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
764764
(value.nulls === 'first' || value.nulls === 'last')
765765
) {
766766
result = result.orderBy(
767-
sql.ref(`${modelAlias}.${field}`),
767+
fieldRef,
768768
sql.raw(`${this.negateSort(value.sort, negated)} nulls ${value.nulls}`),
769769
);
770770
}
@@ -865,7 +865,7 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
865865
const fieldDef = requireField(this.schema, model, field);
866866
if (fieldDef.computed) {
867867
// TODO: computed field from delegate base?
868-
return query.select((eb) => buildFieldRef(this.schema, model, field, this.options, eb).as(field));
868+
return query.select((eb) => this.fieldRef(model, field, eb, modelAlias).as(field));
869869
} else if (!fieldDef.originModel) {
870870
// regular field
871871
return query.select(sql.ref(`${modelAlias}.${field}`).as(field));
@@ -993,6 +993,10 @@ export abstract class BaseCrudDialect<Schema extends SchemaDef> {
993993
return eb.not(this.and(eb, ...args));
994994
}
995995

996+
fieldRef(model: string, field: string, eb: ExpressionBuilder<any, any>, modelAlias?: string) {
997+
return buildFieldRef(this.schema, model, field, this.options, eb, modelAlias);
998+
}
999+
9961000
// #endregion
9971001

9981002
// #region abstract methods

0 commit comments

Comments
 (0)