@zenstackhq/runtime 3.0.0-alpha.11 → 3.0.0-alpha.13
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-BQGRBbOU.d.cts → contract-CBOBlAuw.d.cts} +82 -51
- package/dist/{contract-BQGRBbOU.d.ts → contract-CBOBlAuw.d.ts} +82 -51
- package/dist/index.cjs +664 -243
- 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 +664 -243
- package/dist/index.js.map +1 -1
- package/dist/plugins/{policy.cjs → policy/index.cjs} +225 -125
- package/dist/plugins/policy/index.cjs.map +1 -0
- package/dist/plugins/{policy.d.ts → policy/index.d.cts} +1 -1
- package/dist/plugins/{policy.d.cts → policy/index.d.ts} +1 -1
- package/dist/plugins/{policy.js → policy/index.js} +225 -125
- package/dist/plugins/policy/index.js.map +1 -0
- package/dist/plugins/policy/plugin.zmodel +33 -0
- package/package.json +12 -12
- package/dist/plugins/policy.cjs.map +0 -1
- package/dist/plugins/policy.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Decimal, { Decimal as Decimal$1 } from 'decimal.js';
|
|
2
|
-
import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields,
|
|
2
|
+
import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, BuiltinType, GetModel, FieldDef, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, IsDelegateModel, GetModelDiscriminator, GetSubModels, FieldIsRelationArray, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, DataSourceProviderType, DataSourceProvider, ProcedureDef } from '@zenstackhq/sdk/schema';
|
|
3
3
|
import { Generated, Kysely, ExpressionBuilder, OperandExpression, SqlBool, SelectQueryBuilder, Expression, ExpressionWrapper, RootOperationNode, QueryResult, UnknownRow, OperationNode, SqliteDialectConfig, PostgresDialectConfig, KyselyConfig } from 'kysely';
|
|
4
4
|
|
|
5
5
|
type Optional<T extends object, K extends keyof T = keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
@@ -10,7 +10,18 @@ type Simplify<T, D extends number = 6> = D extends 0 ? T : T extends object ? T
|
|
|
10
10
|
[K in keyof T]: Simplify<T[K], _Depth[D]>;
|
|
11
11
|
} & {} : T;
|
|
12
12
|
type WrapType<T, Optional = false, Array = false> = Optional extends true ? T | null : Array extends true ? T[] : T;
|
|
13
|
-
type
|
|
13
|
+
type TypeMap = {
|
|
14
|
+
String: string;
|
|
15
|
+
Boolean: boolean;
|
|
16
|
+
Int: number;
|
|
17
|
+
Float: number;
|
|
18
|
+
BigInt: bigint;
|
|
19
|
+
Decimal: Decimal;
|
|
20
|
+
DateTime: Date;
|
|
21
|
+
Bytes: Uint8Array;
|
|
22
|
+
Json: JsonValue;
|
|
23
|
+
};
|
|
24
|
+
type MapBaseType$1<T extends string> = T extends keyof TypeMap ? TypeMap[T] : unknown;
|
|
14
25
|
type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
|
|
15
26
|
type JsonObject = {
|
|
16
27
|
[key: string]: JsonValue;
|
|
@@ -41,18 +52,21 @@ type ToKyselySchema<Schema extends SchemaDef> = {
|
|
|
41
52
|
};
|
|
42
53
|
type ToKysely<Schema extends SchemaDef> = Kysely<ToKyselySchema<Schema>>;
|
|
43
54
|
type ToKyselyTable<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
44
|
-
[Field in ScalarFields<Schema, Model, false> | ForeignKeyFields<Schema, Model>]: toKyselyFieldType<Schema, Model, Field>;
|
|
55
|
+
[Field in ScalarFields<Schema, Model, false> | ForeignKeyFields<Schema, Model> as GetModelField<Schema, Model, Field>['originModel'] extends string ? never : Field]: toKyselyFieldType<Schema, Model, Field>;
|
|
45
56
|
};
|
|
46
57
|
type MapBaseType<T> = T extends 'String' ? string : T extends 'Boolean' ? boolean : T extends 'Int' | 'Float' ? number : T extends 'BigInt' ? bigint : T extends 'Decimal' ? Decimal : T extends 'DateTime' ? string : unknown;
|
|
47
58
|
type WrapNull<T, Null> = Null extends true ? T | null : T;
|
|
48
|
-
type MapType$1<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
49
|
-
type toKyselyFieldType<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
59
|
+
type MapType$1<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = WrapNull<MapBaseType<GetModelFieldType<Schema, Model, Field>>, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
60
|
+
type toKyselyFieldType<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = FieldHasDefault<Schema, Model, Field> extends true ? Generated<MapType$1<Schema, Model, Field>> : MapType$1<Schema, Model, Field>;
|
|
50
61
|
|
|
51
|
-
type DefaultModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Omit = undefined, Optional = false, Array = false> = WrapType<{
|
|
52
|
-
[Key in NonRelationFields<Schema, Model> as Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]:
|
|
62
|
+
type DefaultModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Omit = undefined, Optional = false, Array = false> = WrapType<IsDelegateModel<Schema, Model> extends true ? DelegateUnionResult<Schema, Model, GetSubModels<Schema, Model>, Omit> : {
|
|
63
|
+
[Key in NonRelationFields<Schema, Model> as Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: MapModelFieldType<Schema, Model, Key>;
|
|
53
64
|
}, Optional, Array>;
|
|
65
|
+
type DelegateUnionResult<Schema extends SchemaDef, Model extends GetModels<Schema>, SubModel extends GetModels<Schema>, Omit = undefined> = SubModel extends string ? DefaultModelResult<Schema, SubModel, Omit> & {
|
|
66
|
+
[K in GetModelDiscriminator<Schema, Model>]: SubModel;
|
|
67
|
+
} : never;
|
|
54
68
|
type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit> = {
|
|
55
|
-
[Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model> ? Key : never : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ?
|
|
69
|
+
[Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model> ? Key : never : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? Select[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? 'select' extends keyof Select[Key] ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Pick<Select[Key], 'select'>, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Pick<Select[Key], 'include' | 'omit'>, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : DefaultModelResult<Schema, RelationFieldType<Schema, Model, Key>, Omit, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
|
|
56
70
|
};
|
|
57
71
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
58
72
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -68,16 +82,21 @@ type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args
|
|
|
68
82
|
include: infer I;
|
|
69
83
|
omit?: infer O;
|
|
70
84
|
} ? DefaultModelResult<Schema, Model, O> & {
|
|
71
|
-
[Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: I[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key],
|
|
85
|
+
[Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: I[Key] extends FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : DefaultModelResult<Schema, RelationFieldType<Schema, Model, Key>, undefined, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
|
|
72
86
|
} : Args extends {
|
|
73
87
|
omit: infer O;
|
|
74
88
|
} ? DefaultModelResult<Schema, Model, O> : DefaultModelResult<Schema, Model>, Optional, Array>;
|
|
75
|
-
type SimplifiedModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends SelectIncludeOmit<Schema, Model, boolean
|
|
89
|
+
type SimplifiedModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends SelectIncludeOmit<Schema, Model, boolean> = {}, Optional = false, Array = false> = Simplify<ModelResult<Schema, Model, Args, Optional, Array>>;
|
|
90
|
+
type TypeDefResult<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>> = Optional<{
|
|
91
|
+
[Key in GetTypeDefFields<Schema, TypeDef>]: MapTypeDefFieldType<Schema, TypeDef, Key>;
|
|
92
|
+
}, keyof {
|
|
93
|
+
[Key in GetTypeDefFields<Schema, TypeDef> as TypeDefFieldIsOptional<Schema, TypeDef, Key> extends true ? Key : never]: true;
|
|
94
|
+
}>;
|
|
76
95
|
type BatchResult = {
|
|
77
96
|
count: number;
|
|
78
97
|
};
|
|
79
98
|
type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ScalarOnly extends boolean = false> = {
|
|
80
|
-
[Key in
|
|
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>>;
|
|
81
100
|
} & {
|
|
82
101
|
$expr?: (eb: ExpressionBuilder<ToKyselySchema<Schema>, Model>) => OperandExpression<SqlBool>;
|
|
83
102
|
} & {
|
|
@@ -130,7 +149,7 @@ type BooleanFilter<Nullable extends boolean> = NullableIf<boolean, Nullable> | {
|
|
|
130
149
|
type SortOrder = 'asc' | 'desc';
|
|
131
150
|
type NullsOrder = 'first' | 'last';
|
|
132
151
|
type OrderBy<Schema extends SchemaDef, Model extends GetModels<Schema>, WithRelation extends boolean, WithAggregation extends boolean> = {
|
|
133
|
-
[Key in NonRelationFields<Schema, Model>]?:
|
|
152
|
+
[Key in NonRelationFields<Schema, Model>]?: ModelFieldIsOptional<Schema, Model, Key> extends true ? SortOrder | {
|
|
134
153
|
sort: SortOrder;
|
|
135
154
|
nulls?: NullsOrder;
|
|
136
155
|
} : SortOrder;
|
|
@@ -179,7 +198,7 @@ type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> = tr
|
|
|
179
198
|
};
|
|
180
199
|
};
|
|
181
200
|
type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
182
|
-
[Key in RelationFields<Schema, Model>]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true :
|
|
201
|
+
[Key in RelationFields<Schema, Model>]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true : ModelFieldIsOptional<Schema, Model, Key> extends true ? true : false>;
|
|
183
202
|
};
|
|
184
203
|
type Subset<T, U> = {
|
|
185
204
|
[key in keyof T]: key extends keyof U ? T[key] : never;
|
|
@@ -199,19 +218,20 @@ type ToManyRelationFilter<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
199
218
|
none?: WhereInput<Schema, RelationFieldType<Schema, Model, Field>>;
|
|
200
219
|
};
|
|
201
220
|
type ToOneRelationFilter<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>> & {
|
|
202
|
-
is?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>,
|
|
203
|
-
isNot?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>,
|
|
204
|
-
},
|
|
221
|
+
is?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
222
|
+
isNot?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
223
|
+
}, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
205
224
|
type RelationFilter<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = FieldIsArray<Schema, Model, Field> extends true ? ToManyRelationFilter<Schema, Model, Field> : ToOneRelationFilter<Schema, Model, Field>;
|
|
206
|
-
type
|
|
207
|
-
type
|
|
225
|
+
type MapModelFieldType<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = MapFieldDefType<Schema, GetModelField<Schema, Model, Field>>;
|
|
226
|
+
type MapTypeDefFieldType<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Field extends GetTypeDefFields<Schema, TypeDef>> = MapFieldDefType<Schema, GetTypeDefField<Schema, TypeDef, Field>>;
|
|
227
|
+
type MapFieldDefType<Schema extends SchemaDef, T extends Pick<FieldDef, 'type' | 'optional' | 'array'>> = WrapType<T['type'] extends GetEnums<Schema> ? keyof GetEnum<Schema, T['type']> : T['type'] extends GetTypeDefs<Schema> ? TypeDefResult<Schema, T['type']> & Record<string, unknown> : MapBaseType$1<T['type']>, T['optional'], T['array']>;
|
|
208
228
|
type OptionalFieldsForCreate<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
209
|
-
[Key in
|
|
229
|
+
[Key in GetModelFields<Schema, Model> as ModelFieldIsOptional<Schema, Model, Key> extends true ? Key : FieldHasDefault<Schema, Model, Key> extends true ? Key : GetModelField<Schema, Model, Key>['updatedAt'] extends true ? Key : FieldIsRelationArray<Schema, Model, Key> extends true ? Key : never]: GetModelField<Schema, Model, Key>;
|
|
210
230
|
};
|
|
211
|
-
type GetRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
212
|
-
type OppositeRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
213
|
-
type OppositeRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
214
|
-
type OppositeRelationAndFK<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
231
|
+
type GetRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['relation'];
|
|
232
|
+
type OppositeRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, FT = FieldType<Schema, Model, Field>> = FT extends GetModels<Schema> ? GetRelation<Schema, Model, Field> extends RelationInfo ? GetRelation<Schema, Model, Field>['opposite'] extends GetModelFields<Schema, FT> ? Schema['models'][FT]['fields'][GetRelation<Schema, Model, Field>['opposite']]['relation'] : never : never : never;
|
|
233
|
+
type OppositeRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Opposite = OppositeRelation<Schema, Model, Field>> = Opposite extends RelationInfo ? (Opposite['fields'] extends string[] ? Opposite['fields'] : []) : [];
|
|
234
|
+
type OppositeRelationAndFK<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, FT = FieldType<Schema, Model, Field>, Relation = GetModelField<Schema, Model, Field>['relation'], Opposite = Relation extends RelationInfo ? Relation['opposite'] : never> = FT extends GetModels<Schema> ? Opposite extends GetModelFields<Schema, FT> ? Opposite | OppositeRelationFields<Schema, Model, Field>[number] : never : never;
|
|
215
235
|
type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? {
|
|
216
236
|
skip?: number;
|
|
217
237
|
take?: number;
|
|
@@ -237,20 +257,20 @@ type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<S
|
|
|
237
257
|
};
|
|
238
258
|
type OptionalWrap<Schema extends SchemaDef, Model extends GetModels<Schema>, T extends object> = Optional<T, keyof T & OptionalFieldsForCreate<Schema, Model>>;
|
|
239
259
|
type CreateScalarPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
240
|
-
[Key in ScalarFields<Schema, Model, false>]: ScalarCreatePayload<Schema, Model, Key>;
|
|
260
|
+
[Key in ScalarFields<Schema, Model, false> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]: ScalarCreatePayload<Schema, Model, Key>;
|
|
241
261
|
}>;
|
|
242
|
-
type ScalarCreatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends ScalarFields<Schema, Model, false>> =
|
|
243
|
-
set?:
|
|
262
|
+
type ScalarCreatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends ScalarFields<Schema, Model, false>> = MapModelFieldType<Schema, Model, Field> | (FieldIsArray<Schema, Model, Field> extends true ? {
|
|
263
|
+
set?: MapModelFieldType<Schema, Model, Field>[];
|
|
244
264
|
} : never);
|
|
245
265
|
type CreateFKPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
246
|
-
[Key in ForeignKeyFields<Schema, Model>]:
|
|
266
|
+
[Key in ForeignKeyFields<Schema, Model>]: MapModelFieldType<Schema, Model, Key>;
|
|
247
267
|
}>;
|
|
248
268
|
type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
269
|
+
connectOrCreate?: ConnectOrCreateInput<Schema, Model, Field>;
|
|
249
270
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
250
271
|
createMany?: NestedCreateManyInput<Schema, Model, Field>;
|
|
251
272
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
252
|
-
|
|
253
|
-
}, FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany'>;
|
|
273
|
+
}, (FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany') | (FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' : never)>;
|
|
254
274
|
type CreateRelationPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
255
275
|
[Key in RelationFields<Schema, Model>]: CreateRelationFieldPayload<Schema, Model, Key>;
|
|
256
276
|
}>;
|
|
@@ -296,24 +316,24 @@ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
|
296
316
|
omit?: OmitInput<Schema, Model>;
|
|
297
317
|
};
|
|
298
318
|
type UpdateScalarInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
|
|
299
|
-
[Key in NonRelationFields<Schema, Model>]?: ScalarUpdatePayload<Schema, Model, Key>;
|
|
319
|
+
[Key in NonRelationFields<Schema, Model> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]?: ScalarUpdatePayload<Schema, Model, Key>;
|
|
300
320
|
}, Without>;
|
|
301
|
-
type ScalarUpdatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends NonRelationFields<Schema, Model>> =
|
|
302
|
-
set?: NullableIf<number,
|
|
321
|
+
type ScalarUpdatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends NonRelationFields<Schema, Model>> = MapModelFieldType<Schema, Model, Field> | (Field extends NumericFields<Schema, Model> ? {
|
|
322
|
+
set?: NullableIf<number, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
303
323
|
increment?: number;
|
|
304
324
|
decrement?: number;
|
|
305
325
|
multiply?: number;
|
|
306
326
|
divide?: number;
|
|
307
327
|
} : never) | (FieldIsArray<Schema, Model, Field> extends true ? {
|
|
308
|
-
set?:
|
|
309
|
-
push?: OrArray<
|
|
328
|
+
set?: MapModelFieldType<Schema, Model, Field>[];
|
|
329
|
+
push?: OrArray<MapModelFieldType<Schema, Model, Field>, true>;
|
|
310
330
|
} : never);
|
|
311
331
|
type UpdateRelationInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
|
|
312
332
|
[Key in RelationFields<Schema, Model>]?: UpdateRelationFieldPayload<Schema, Model, Key>;
|
|
313
333
|
}, Without>;
|
|
314
334
|
type UpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = UpdateScalarInput<Schema, Model, Without> & UpdateRelationInput<Schema, Model, Without>;
|
|
315
335
|
type UpdateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = FieldIsArray<Schema, Model, Field> extends true ? ToManyRelationUpdateInput<Schema, Model, Field> : ToOneRelationUpdateInput<Schema, Model, Field>;
|
|
316
|
-
type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = {
|
|
336
|
+
type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
317
337
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
318
338
|
createMany?: NestedCreateManyInput<Schema, Model, Field>;
|
|
319
339
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
@@ -325,17 +345,17 @@ type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels
|
|
|
325
345
|
delete?: NestedDeleteInput<Schema, Model, Field>;
|
|
326
346
|
deleteMany?: NestedDeleteManyInput<Schema, Model, Field>;
|
|
327
347
|
set?: SetRelationInput<Schema, Model, Field>;
|
|
328
|
-
}
|
|
329
|
-
type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = {
|
|
348
|
+
}, FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' | 'upsert' : never>;
|
|
349
|
+
type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
330
350
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
331
351
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
332
352
|
connectOrCreate?: ConnectOrCreateInput<Schema, Model, Field>;
|
|
333
353
|
update?: NestedUpdateInput<Schema, Model, Field>;
|
|
334
354
|
upsert?: NestedUpsertInput<Schema, Model, Field>;
|
|
335
|
-
} & (
|
|
355
|
+
} & (ModelFieldIsOptional<Schema, Model, Field> extends true ? {
|
|
336
356
|
disconnect?: DisconnectInput<Schema, Model, Field>;
|
|
337
357
|
delete?: NestedDeleteInput<Schema, Model, Field>;
|
|
338
|
-
} : {})
|
|
358
|
+
} : {}), FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'connectOrCreate' | 'upsert' : never>;
|
|
339
359
|
type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
340
360
|
where: WhereUniqueInput<Schema, Model>;
|
|
341
361
|
select?: SelectInput<Schema, Model, true>;
|
|
@@ -373,13 +393,13 @@ type AggregateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> =
|
|
|
373
393
|
_max?: MinMaxInput<Schema, Model>;
|
|
374
394
|
});
|
|
375
395
|
type NumericFields<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
376
|
-
[Key in
|
|
396
|
+
[Key in GetModelFields<Schema, Model> as GetModelFieldType<Schema, Model, Key> extends 'Int' | 'Float' | 'BigInt' | 'Decimal' ? FieldIsArray<Schema, Model, Key> extends true ? never : Key : never]: GetModelField<Schema, Model, Key>;
|
|
377
397
|
};
|
|
378
398
|
type SumAvgInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
379
399
|
[Key in NumericFields<Schema, Model>]?: true;
|
|
380
400
|
};
|
|
381
401
|
type MinMaxInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
382
|
-
[Key in
|
|
402
|
+
[Key in GetModelFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? never : FieldIsRelation<Schema, Model, Key> extends true ? never : Key]?: true;
|
|
383
403
|
};
|
|
384
404
|
type AggregateResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends AggregateArgs<Schema, Model>> = (Args extends {
|
|
385
405
|
_count: infer Count;
|
|
@@ -420,7 +440,7 @@ type GroupByArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
|
420
440
|
_max?: MinMaxInput<Schema, Model>;
|
|
421
441
|
});
|
|
422
442
|
type GroupByResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends GroupByArgs<Schema, Model>> = Array<{
|
|
423
|
-
[Key in NonRelationFields<Schema, Model> as Key extends ValueOfPotentialTuple<Args['by']> ? Key : never]:
|
|
443
|
+
[Key in NonRelationFields<Schema, Model> as Key extends ValueOfPotentialTuple<Args['by']> ? Key : never]: MapModelFieldType<Schema, Model, Key>;
|
|
424
444
|
} & (Args extends {
|
|
425
445
|
_count: infer Count;
|
|
426
446
|
} ? {
|
|
@@ -462,9 +482,9 @@ type NestedUpdateManyInput<Schema extends SchemaDef, Model extends GetModels<Sch
|
|
|
462
482
|
type NestedDeleteInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = FieldIsArray<Schema, Model, Field> extends true ? OrArray<WhereUniqueInput<Schema, RelationFieldType<Schema, Model, Field>>, true> : boolean | WhereInput<Schema, RelationFieldType<Schema, Model, Field>>;
|
|
463
483
|
type NestedDeleteManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = OrArray<WhereInput<Schema, RelationFieldType<Schema, Model, Field>, true>>;
|
|
464
484
|
type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
465
|
-
[Key in RelationFields<Schema, Model> as
|
|
485
|
+
[Key in RelationFields<Schema, Model> as GetModelField<Schema, Model, Key>['relation'] extends {
|
|
466
486
|
references: unknown[];
|
|
467
|
-
} ? never : Key]:
|
|
487
|
+
} ? never : Key]: true;
|
|
468
488
|
};
|
|
469
489
|
|
|
470
490
|
type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
|
|
@@ -478,17 +498,15 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
478
498
|
protected readonly schema: Schema;
|
|
479
499
|
protected readonly options: ClientOptions<Schema>;
|
|
480
500
|
constructor(schema: Schema, options: ClientOptions<Schema>);
|
|
481
|
-
abstract get provider(): DataSourceProviderType;
|
|
482
501
|
transformPrimitive(value: unknown, _type: BuiltinType, _forArrayField: boolean): unknown;
|
|
483
|
-
|
|
484
|
-
abstract buildSkipTake(query: SelectQueryBuilder<any, any, any>, skip: number | undefined, take: number | undefined): SelectQueryBuilder<any, any, any>;
|
|
502
|
+
buildSelectModel(eb: ExpressionBuilder<any, any>, model: string): SelectQueryBuilder<any, any, {}>;
|
|
485
503
|
buildFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, where: boolean | object | undefined): Expression<SqlBool>;
|
|
486
504
|
protected buildCompositeFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, key: 'AND' | 'OR' | 'NOT', payload: any): Expression<SqlBool>;
|
|
487
505
|
private buildRelationFilter;
|
|
488
506
|
private buildToOneRelationFilter;
|
|
489
507
|
private buildToManyRelationFilter;
|
|
490
508
|
private buildArrayFilter;
|
|
491
|
-
buildPrimitiveFilter(eb: ExpressionBuilder<any, any>,
|
|
509
|
+
buildPrimitiveFilter(eb: ExpressionBuilder<any, any>, fieldRef: Expression<any>, fieldDef: FieldDef, payload: any): Expression<SqlBool>;
|
|
492
510
|
private buildLiteralFilter;
|
|
493
511
|
private buildStandardFilter;
|
|
494
512
|
private buildStringFilter;
|
|
@@ -499,6 +517,9 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
499
517
|
private buildBytesFilter;
|
|
500
518
|
private buildEnumFilter;
|
|
501
519
|
buildOrderBy(query: SelectQueryBuilder<any, any, any>, model: string, modelAlias: string, orderBy: OrArray<OrderBy<Schema, GetModels<Schema>, boolean, boolean>> | undefined, useDefaultIfEmpty: boolean, negated: boolean): SelectQueryBuilder<any, any, any>;
|
|
520
|
+
buildSelectAllFields(model: string, query: SelectQueryBuilder<any, any, any>, omit?: Record<string, boolean | undefined>): SelectQueryBuilder<any, any, any>;
|
|
521
|
+
buildSelectField(query: SelectQueryBuilder<any, any, any>, model: string, modelAlias: string, field: string): SelectQueryBuilder<any, any, any>;
|
|
522
|
+
buildDelegateJoin(thisModel: string, otherModel: string, query: SelectQueryBuilder<any, any, any>): SelectQueryBuilder<any, any, any>;
|
|
502
523
|
private negateSort;
|
|
503
524
|
true(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
|
|
504
525
|
false(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
|
|
@@ -507,6 +528,15 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
507
528
|
protected and(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): Expression<SqlBool>;
|
|
508
529
|
protected or(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): Expression<SqlBool>;
|
|
509
530
|
protected not(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): ExpressionWrapper<any, any, SqlBool>;
|
|
531
|
+
abstract get provider(): DataSourceProviderType;
|
|
532
|
+
/**
|
|
533
|
+
* Builds selection for a relation field.
|
|
534
|
+
*/
|
|
535
|
+
abstract buildRelationSelection(query: SelectQueryBuilder<any, any, any>, model: string, relationField: string, parentAlias: string, payload: true | FindArgs<Schema, GetModels<Schema>, true>): SelectQueryBuilder<any, any, any>;
|
|
536
|
+
/**
|
|
537
|
+
* Builds skip and take clauses.
|
|
538
|
+
*/
|
|
539
|
+
abstract buildSkipTake(query: SelectQueryBuilder<any, any, any>, skip: number | undefined, take: number | undefined): SelectQueryBuilder<any, any, any>;
|
|
510
540
|
/**
|
|
511
541
|
* Builds an Kysely expression that returns a JSON object for the given key-value pairs.
|
|
512
542
|
*/
|
|
@@ -638,6 +668,7 @@ type OnQueryOperationHooks<Schema extends SchemaDef, Model extends GetModels<Sch
|
|
|
638
668
|
operation: CrudOperation;
|
|
639
669
|
args: unknown;
|
|
640
670
|
query: (args: unknown) => Promise<unknown>;
|
|
671
|
+
client: ClientContract<Schema>;
|
|
641
672
|
}) => MaybePromise<unknown>;
|
|
642
673
|
};
|
|
643
674
|
type OnQueryHookContext<Schema extends SchemaDef, Model extends GetModels<Schema>, Operation extends keyof ModelOperations<Schema, Model>> = {
|
|
@@ -877,7 +908,7 @@ interface ClientConstructor {
|
|
|
877
908
|
* CRUD operations.
|
|
878
909
|
*/
|
|
879
910
|
type CRUD = 'create' | 'read' | 'update' | 'delete';
|
|
880
|
-
|
|
911
|
+
type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>> = Omit<{
|
|
881
912
|
/**
|
|
882
913
|
* Returns a list of entities.
|
|
883
914
|
* @param args - query args
|
|
@@ -1379,6 +1410,6 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1379
1410
|
* });
|
|
1380
1411
|
*/
|
|
1381
1412
|
groupBy<T extends GroupByArgs<Schema, Model>>(args: Subset<T, GroupByArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<GroupByResult<Schema, Model, T>>>;
|
|
1382
|
-
}
|
|
1413
|
+
}, IsDelegateModel<Schema, Model> extends true ? 'create' | 'createMany' | 'createManyAndReturn' | 'upsert' : never>;
|
|
1383
1414
|
|
|
1384
|
-
export { type
|
|
1415
|
+
export { type DeleteArgs as A, type BatchResult as B, type ClientConstructor as C, type DateTimeFilter as D, type DeleteManyArgs as E, type FindArgs as F, type CountArgs as G, type CountResult as H, type IncludeInput as I, type JsonArray as J, type AggregateArgs as K, type AggregateResult as L, type ModelResult as M, type NumberFilter as N, type OrderBy as O, type GroupByArgs as P, type GroupByResult as Q, type RuntimePlugin as R, type SimplifiedModelResult as S, type ToKysely as T, type UpdateArgs as U, type OnKyselyQueryArgs as V, type WhereInput as W, type JsonObject as a, type JsonValue as b, type ClientContract as c, type ClientOptions as d, definePlugin as e, type TypeDefResult as f, type StringFilter as g, type BytesFilter as h, type BooleanFilter as i, type SortOrder as j, type NullsOrder as k, type WhereUniqueInput as l, type OmitInput as m, type SelectIncludeOmit as n, type SelectInput as o, type Subset as p, type SelectSubset as q, type FindManyArgs as r, type FindFirstArgs as s, type FindUniqueArgs as t, type CreateArgs as u, type CreateManyArgs as v, type CreateManyAndReturnArgs as w, type UpdateManyArgs as x, type UpdateManyAndReturnArgs as y, type UpsertArgs as z };
|