Skip to content

Commit 0040e9d

Browse files
authored
Merge pull request #149 from zenstackhq/dev
merge dev to main (v3.0.0-alpha.19)
2 parents 4e359fc + 12d0fa1 commit 0040e9d

File tree

27 files changed

+552
-313
lines changed

27 files changed

+552
-313
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.18",
3+
"version": "3.0.0-alpha.19",
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.18",
6+
"version": "3.0.0-alpha.19",
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.18",
3+
"version": "3.0.0-alpha.19",
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.18",
3+
"version": "3.0.0-alpha.19",
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.18",
3+
"version": "3.0.0-alpha.19",
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.18",
3+
"version": "3.0.0-alpha.19",
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.18",
4+
"version": "3.0.0-alpha.19",
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.18",
4+
"version": "3.0.0-alpha.19",
55
"license": "MIT",
66
"author": "ZenStack Team",
77
"files": [

packages/runtime/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@zenstackhq/runtime",
3-
"version": "3.0.0-alpha.18",
3+
"version": "3.0.0-alpha.19",
44
"description": "ZenStack Runtime",
55
"type": "module",
66
"scripts": {
@@ -75,7 +75,7 @@
7575
"uuid": "^11.0.5"
7676
},
7777
"peerDependencies": {
78-
"better-sqlite3": "^11.8.1",
78+
"better-sqlite3": "^12.2.0",
7979
"kysely": "catalog:",
8080
"pg": "^8.13.1",
8181
"zod": "catalog:"

packages/runtime/src/client/crud-types.ts

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ export type WhereInput<
223223
: FieldIsArray<Schema, Model, Key> extends true
224224
? ArrayFilter<GetModelFieldType<Schema, Model, Key>>
225225
: // primitive
226-
PrimitiveFilter<GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>>;
226+
PrimitiveFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>>;
227227
} & {
228228
$expr?: (eb: ExpressionBuilder<ToKyselySchema<Schema>, Model>) => OperandExpression<SqlBool>;
229229
} & {
@@ -249,47 +249,52 @@ type ArrayFilter<T extends string> = {
249249
isEmpty?: boolean;
250250
};
251251

252-
type PrimitiveFilter<T extends string, Nullable extends boolean> = T extends 'String'
253-
? StringFilter<Nullable>
252+
type PrimitiveFilter<Schema extends SchemaDef, T extends string, Nullable extends boolean> = T extends 'String'
253+
? StringFilter<Schema, Nullable>
254254
: T extends 'Int' | 'Float' | 'Decimal' | 'BigInt'
255-
? NumberFilter<T, Nullable>
255+
? NumberFilter<Schema, T, Nullable>
256256
: T extends 'Boolean'
257257
? BooleanFilter<Nullable>
258258
: T extends 'DateTime'
259-
? DateTimeFilter<Nullable>
259+
? DateTimeFilter<Schema, Nullable>
260260
: T extends 'Bytes'
261261
? BytesFilter<Nullable>
262262
: T extends 'Json'
263263
? 'Not implemented yet' // TODO: Json filter
264264
: never;
265265

266-
type CommonPrimitiveFilter<DataType, T extends BuiltinType, Nullable extends boolean> = {
266+
type CommonPrimitiveFilter<Schema extends SchemaDef, DataType, T extends BuiltinType, Nullable extends boolean> = {
267267
equals?: NullableIf<DataType, Nullable>;
268268
in?: DataType[];
269269
notIn?: DataType[];
270270
lt?: DataType;
271271
lte?: DataType;
272272
gt?: DataType;
273273
gte?: DataType;
274-
not?: PrimitiveFilter<T, Nullable>;
274+
not?: PrimitiveFilter<Schema, T, Nullable>;
275275
};
276276

277-
export type StringFilter<Nullable extends boolean> =
277+
export type StringFilter<Schema extends SchemaDef, Nullable extends boolean> =
278278
| NullableIf<string, Nullable>
279-
| (CommonPrimitiveFilter<string, 'String', Nullable> & {
279+
| (CommonPrimitiveFilter<Schema, string, 'String', Nullable> & {
280280
contains?: string;
281281
startsWith?: string;
282282
endsWith?: string;
283-
mode?: 'default' | 'insensitive';
284-
});
283+
} & (ProviderSupportsCaseSensitivity<Schema> extends true
284+
? {
285+
mode?: 'default' | 'insensitive';
286+
}
287+
: {}));
285288

286-
export type NumberFilter<T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean> =
287-
| NullableIf<number | bigint, Nullable>
288-
| CommonPrimitiveFilter<number, T, Nullable>;
289+
export type NumberFilter<
290+
Schema extends SchemaDef,
291+
T extends 'Int' | 'Float' | 'Decimal' | 'BigInt',
292+
Nullable extends boolean,
293+
> = NullableIf<number | bigint, Nullable> | CommonPrimitiveFilter<Schema, number, T, Nullable>;
289294

290-
export type DateTimeFilter<Nullable extends boolean> =
295+
export type DateTimeFilter<Schema extends SchemaDef, Nullable extends boolean> =
291296
| NullableIf<Date | string, Nullable>
292-
| CommonPrimitiveFilter<Date | string, 'DateTime', Nullable>;
297+
| CommonPrimitiveFilter<Schema, Date | string, 'DateTime', Nullable>;
293298

294299
export type BytesFilter<Nullable extends boolean> =
295300
| NullableIf<Uint8Array | Buffer, Nullable>
@@ -393,7 +398,12 @@ export type SelectInput<
393398
[Key in NonRelationFields<Schema, Model>]?: true;
394399
} & (AllowRelation extends true ? IncludeInput<Schema, Model> : {}) & // relation fields
395400
// relation count
396-
(AllowCount extends true ? { _count?: SelectCount<Schema, Model> } : {});
401+
(AllowCount extends true
402+
? // _count is only allowed if the model has to-many relations
403+
HasToManyRelations<Schema, Model> extends true
404+
? { _count?: SelectCount<Schema, Model> }
405+
: {}
406+
: {});
397407

398408
type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> =
399409
| true
@@ -1181,4 +1191,12 @@ type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Sc
11811191
: Key]: true;
11821192
};
11831193

1194+
type HasToManyRelations<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
1195+
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true;
1196+
} extends never
1197+
? false
1198+
: true;
1199+
1200+
type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider'] extends 'postgresql' ? true : false;
1201+
11841202
// #endregion

0 commit comments

Comments
 (0)