@zenstackhq/runtime 3.0.0-alpha.18 → 3.0.0-alpha.19

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.
@@ -96,7 +96,7 @@ type BatchResult = {
96
96
  count: number;
97
97
  };
98
98
  type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ScalarOnly extends boolean = false> = {
99
- [Key in GetModelFields<Schema, Model> as ScalarOnly extends true ? Key extends RelationFields<Schema, Model> ? never : Key : Key]?: Key extends RelationFields<Schema, Model> ? RelationFilter<Schema, Model, Key> : GetModelFieldType<Schema, Model, Key> extends GetEnums<Schema> ? EnumFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>> : FieldIsArray<Schema, Model, Key> extends true ? ArrayFilter<GetModelFieldType<Schema, Model, Key>> : PrimitiveFilter<GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>>;
99
+ [Key in GetModelFields<Schema, Model> as ScalarOnly extends true ? Key extends RelationFields<Schema, Model> ? never : Key : Key]?: Key extends RelationFields<Schema, Model> ? RelationFilter<Schema, Model, Key> : GetModelFieldType<Schema, Model, Key> extends GetEnums<Schema> ? EnumFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>> : FieldIsArray<Schema, Model, Key> extends true ? ArrayFilter<GetModelFieldType<Schema, Model, Key>> : PrimitiveFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>>;
100
100
  } & {
101
101
  $expr?: (eb: ExpressionBuilder<ToKyselySchema<Schema>, Model>) => OperandExpression<SqlBool>;
102
102
  } & {
@@ -117,8 +117,8 @@ type ArrayFilter<T extends string> = {
117
117
  hasSome?: MapBaseType$1<T>[];
118
118
  isEmpty?: boolean;
119
119
  };
120
- type PrimitiveFilter<T extends string, Nullable extends boolean> = T extends 'String' ? StringFilter<Nullable> : T extends 'Int' | 'Float' | 'Decimal' | 'BigInt' ? NumberFilter<T, Nullable> : T extends 'Boolean' ? BooleanFilter<Nullable> : T extends 'DateTime' ? DateTimeFilter<Nullable> : T extends 'Bytes' ? BytesFilter<Nullable> : T extends 'Json' ? 'Not implemented yet' : never;
121
- type CommonPrimitiveFilter<DataType, T extends BuiltinType, Nullable extends boolean> = {
120
+ type PrimitiveFilter<Schema extends SchemaDef, T extends string, Nullable extends boolean> = T extends 'String' ? StringFilter<Schema, Nullable> : T extends 'Int' | 'Float' | 'Decimal' | 'BigInt' ? NumberFilter<Schema, T, Nullable> : T extends 'Boolean' ? BooleanFilter<Nullable> : T extends 'DateTime' ? DateTimeFilter<Schema, Nullable> : T extends 'Bytes' ? BytesFilter<Nullable> : T extends 'Json' ? 'Not implemented yet' : never;
121
+ type CommonPrimitiveFilter<Schema extends SchemaDef, DataType, T extends BuiltinType, Nullable extends boolean> = {
122
122
  equals?: NullableIf<DataType, Nullable>;
123
123
  in?: DataType[];
124
124
  notIn?: DataType[];
@@ -126,16 +126,17 @@ type CommonPrimitiveFilter<DataType, T extends BuiltinType, Nullable extends boo
126
126
  lte?: DataType;
127
127
  gt?: DataType;
128
128
  gte?: DataType;
129
- not?: PrimitiveFilter<T, Nullable>;
129
+ not?: PrimitiveFilter<Schema, T, Nullable>;
130
130
  };
131
- type StringFilter<Nullable extends boolean> = NullableIf<string, Nullable> | (CommonPrimitiveFilter<string, 'String', Nullable> & {
131
+ type StringFilter<Schema extends SchemaDef, Nullable extends boolean> = NullableIf<string, Nullable> | (CommonPrimitiveFilter<Schema, string, 'String', Nullable> & {
132
132
  contains?: string;
133
133
  startsWith?: string;
134
134
  endsWith?: string;
135
+ } & (ProviderSupportsCaseSensitivity<Schema> extends true ? {
135
136
  mode?: 'default' | 'insensitive';
136
- });
137
- type NumberFilter<T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean> = NullableIf<number | bigint, Nullable> | CommonPrimitiveFilter<number, T, Nullable>;
138
- type DateTimeFilter<Nullable extends boolean> = NullableIf<Date | string, Nullable> | CommonPrimitiveFilter<Date | string, 'DateTime', Nullable>;
137
+ } : {}));
138
+ type NumberFilter<Schema extends SchemaDef, T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean> = NullableIf<number | bigint, Nullable> | CommonPrimitiveFilter<Schema, number, T, Nullable>;
139
+ type DateTimeFilter<Schema extends SchemaDef, Nullable extends boolean> = NullableIf<Date | string, Nullable> | CommonPrimitiveFilter<Schema, Date | string, 'DateTime', Nullable>;
139
140
  type BytesFilter<Nullable extends boolean> = NullableIf<Uint8Array | Buffer, Nullable> | {
140
141
  equals?: NullableIf<Uint8Array, Nullable>;
141
142
  in?: Uint8Array[];
@@ -187,9 +188,9 @@ type Cursor<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
187
188
  type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
188
189
  [Key in NonRelationFields<Schema, Model>]?: true;
189
190
  } & (AllowRelation extends true ? IncludeInput<Schema, Model> : {}) & // relation fields
190
- (AllowCount extends true ? {
191
+ (AllowCount extends true ? HasToManyRelations<Schema, Model> extends true ? {
191
192
  _count?: SelectCount<Schema, Model>;
192
- } : {});
193
+ } : {} : {});
193
194
  type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> = true | {
194
195
  select: {
195
196
  [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true | {
@@ -486,6 +487,10 @@ type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Sc
486
487
  references: unknown[];
487
488
  } ? never : Key]: true;
488
489
  };
490
+ type HasToManyRelations<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
491
+ [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true;
492
+ } extends never ? false : true;
493
+ type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider'] extends 'postgresql' ? true : false;
489
494
 
490
495
  type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
491
496
 
@@ -520,6 +525,7 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
520
525
  buildSelectAllFields(model: string, query: SelectQueryBuilder<any, any, any>, omit?: Record<string, boolean | undefined>): SelectQueryBuilder<any, any, any>;
521
526
  buildSelectField(query: SelectQueryBuilder<any, any, any>, model: string, modelAlias: string, field: string): SelectQueryBuilder<any, any, any>;
522
527
  buildDelegateJoin(thisModel: string, otherModel: string, query: SelectQueryBuilder<any, any, any>): SelectQueryBuilder<any, any, any>;
528
+ buildCountJson(model: string, eb: ExpressionBuilder<any, any>, parentAlias: string, payload: any): ExpressionWrapper<any, any, unknown>;
523
529
  private negateSort;
524
530
  true(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
525
531
  false(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
@@ -96,7 +96,7 @@ type BatchResult = {
96
96
  count: number;
97
97
  };
98
98
  type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ScalarOnly extends boolean = false> = {
99
- [Key in GetModelFields<Schema, Model> as ScalarOnly extends true ? Key extends RelationFields<Schema, Model> ? never : Key : Key]?: Key extends RelationFields<Schema, Model> ? RelationFilter<Schema, Model, Key> : GetModelFieldType<Schema, Model, Key> extends GetEnums<Schema> ? EnumFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>> : FieldIsArray<Schema, Model, Key> extends true ? ArrayFilter<GetModelFieldType<Schema, Model, Key>> : PrimitiveFilter<GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>>;
99
+ [Key in GetModelFields<Schema, Model> as ScalarOnly extends true ? Key extends RelationFields<Schema, Model> ? never : Key : Key]?: Key extends RelationFields<Schema, Model> ? RelationFilter<Schema, Model, Key> : GetModelFieldType<Schema, Model, Key> extends GetEnums<Schema> ? EnumFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>> : FieldIsArray<Schema, Model, Key> extends true ? ArrayFilter<GetModelFieldType<Schema, Model, Key>> : PrimitiveFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>>;
100
100
  } & {
101
101
  $expr?: (eb: ExpressionBuilder<ToKyselySchema<Schema>, Model>) => OperandExpression<SqlBool>;
102
102
  } & {
@@ -117,8 +117,8 @@ type ArrayFilter<T extends string> = {
117
117
  hasSome?: MapBaseType$1<T>[];
118
118
  isEmpty?: boolean;
119
119
  };
120
- type PrimitiveFilter<T extends string, Nullable extends boolean> = T extends 'String' ? StringFilter<Nullable> : T extends 'Int' | 'Float' | 'Decimal' | 'BigInt' ? NumberFilter<T, Nullable> : T extends 'Boolean' ? BooleanFilter<Nullable> : T extends 'DateTime' ? DateTimeFilter<Nullable> : T extends 'Bytes' ? BytesFilter<Nullable> : T extends 'Json' ? 'Not implemented yet' : never;
121
- type CommonPrimitiveFilter<DataType, T extends BuiltinType, Nullable extends boolean> = {
120
+ type PrimitiveFilter<Schema extends SchemaDef, T extends string, Nullable extends boolean> = T extends 'String' ? StringFilter<Schema, Nullable> : T extends 'Int' | 'Float' | 'Decimal' | 'BigInt' ? NumberFilter<Schema, T, Nullable> : T extends 'Boolean' ? BooleanFilter<Nullable> : T extends 'DateTime' ? DateTimeFilter<Schema, Nullable> : T extends 'Bytes' ? BytesFilter<Nullable> : T extends 'Json' ? 'Not implemented yet' : never;
121
+ type CommonPrimitiveFilter<Schema extends SchemaDef, DataType, T extends BuiltinType, Nullable extends boolean> = {
122
122
  equals?: NullableIf<DataType, Nullable>;
123
123
  in?: DataType[];
124
124
  notIn?: DataType[];
@@ -126,16 +126,17 @@ type CommonPrimitiveFilter<DataType, T extends BuiltinType, Nullable extends boo
126
126
  lte?: DataType;
127
127
  gt?: DataType;
128
128
  gte?: DataType;
129
- not?: PrimitiveFilter<T, Nullable>;
129
+ not?: PrimitiveFilter<Schema, T, Nullable>;
130
130
  };
131
- type StringFilter<Nullable extends boolean> = NullableIf<string, Nullable> | (CommonPrimitiveFilter<string, 'String', Nullable> & {
131
+ type StringFilter<Schema extends SchemaDef, Nullable extends boolean> = NullableIf<string, Nullable> | (CommonPrimitiveFilter<Schema, string, 'String', Nullable> & {
132
132
  contains?: string;
133
133
  startsWith?: string;
134
134
  endsWith?: string;
135
+ } & (ProviderSupportsCaseSensitivity<Schema> extends true ? {
135
136
  mode?: 'default' | 'insensitive';
136
- });
137
- type NumberFilter<T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean> = NullableIf<number | bigint, Nullable> | CommonPrimitiveFilter<number, T, Nullable>;
138
- type DateTimeFilter<Nullable extends boolean> = NullableIf<Date | string, Nullable> | CommonPrimitiveFilter<Date | string, 'DateTime', Nullable>;
137
+ } : {}));
138
+ type NumberFilter<Schema extends SchemaDef, T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean> = NullableIf<number | bigint, Nullable> | CommonPrimitiveFilter<Schema, number, T, Nullable>;
139
+ type DateTimeFilter<Schema extends SchemaDef, Nullable extends boolean> = NullableIf<Date | string, Nullable> | CommonPrimitiveFilter<Schema, Date | string, 'DateTime', Nullable>;
139
140
  type BytesFilter<Nullable extends boolean> = NullableIf<Uint8Array | Buffer, Nullable> | {
140
141
  equals?: NullableIf<Uint8Array, Nullable>;
141
142
  in?: Uint8Array[];
@@ -187,9 +188,9 @@ type Cursor<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
187
188
  type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
188
189
  [Key in NonRelationFields<Schema, Model>]?: true;
189
190
  } & (AllowRelation extends true ? IncludeInput<Schema, Model> : {}) & // relation fields
190
- (AllowCount extends true ? {
191
+ (AllowCount extends true ? HasToManyRelations<Schema, Model> extends true ? {
191
192
  _count?: SelectCount<Schema, Model>;
192
- } : {});
193
+ } : {} : {});
193
194
  type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> = true | {
194
195
  select: {
195
196
  [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true | {
@@ -486,6 +487,10 @@ type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Sc
486
487
  references: unknown[];
487
488
  } ? never : Key]: true;
488
489
  };
490
+ type HasToManyRelations<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
491
+ [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true;
492
+ } extends never ? false : true;
493
+ type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider'] extends 'postgresql' ? true : false;
489
494
 
490
495
  type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
491
496
 
@@ -520,6 +525,7 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
520
525
  buildSelectAllFields(model: string, query: SelectQueryBuilder<any, any, any>, omit?: Record<string, boolean | undefined>): SelectQueryBuilder<any, any, any>;
521
526
  buildSelectField(query: SelectQueryBuilder<any, any, any>, model: string, modelAlias: string, field: string): SelectQueryBuilder<any, any, any>;
522
527
  buildDelegateJoin(thisModel: string, otherModel: string, query: SelectQueryBuilder<any, any, any>): SelectQueryBuilder<any, any, any>;
528
+ buildCountJson(model: string, eb: ExpressionBuilder<any, any>, parentAlias: string, payload: any): ExpressionWrapper<any, any, unknown>;
523
529
  private negateSort;
524
530
  true(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
525
531
  false(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;