@zenstackhq/runtime 3.0.0-alpha.12 → 3.0.0-alpha.14
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-BEAyf7Es.d.cts → contract-BYc34jr_.d.cts} +78 -54
- package/dist/{contract-BEAyf7Es.d.ts → contract-BYc34jr_.d.ts} +78 -54
- package/dist/index.cjs +821 -311
- 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 +821 -311
- 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>>;
|
|
@@ -52,18 +52,21 @@ type ToKyselySchema<Schema extends SchemaDef> = {
|
|
|
52
52
|
};
|
|
53
53
|
type ToKysely<Schema extends SchemaDef> = Kysely<ToKyselySchema<Schema>>;
|
|
54
54
|
type ToKyselyTable<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
55
|
-
[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>;
|
|
56
56
|
};
|
|
57
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;
|
|
58
58
|
type WrapNull<T, Null> = Null extends true ? T | null : T;
|
|
59
|
-
type MapType$1<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
60
|
-
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>;
|
|
61
61
|
|
|
62
|
-
type DefaultModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Omit = undefined, Optional = false, Array = false> = WrapType<{
|
|
63
|
-
[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>;
|
|
64
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;
|
|
65
68
|
type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit> = {
|
|
66
|
-
[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;
|
|
67
70
|
};
|
|
68
71
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
69
72
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -79,16 +82,21 @@ type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args
|
|
|
79
82
|
include: infer I;
|
|
80
83
|
omit?: infer O;
|
|
81
84
|
} ? DefaultModelResult<Schema, Model, O> & {
|
|
82
|
-
[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>>;
|
|
83
86
|
} : Args extends {
|
|
84
87
|
omit: infer O;
|
|
85
88
|
} ? DefaultModelResult<Schema, Model, O> : DefaultModelResult<Schema, Model>, Optional, Array>;
|
|
86
|
-
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
|
+
}>;
|
|
87
95
|
type BatchResult = {
|
|
88
96
|
count: number;
|
|
89
97
|
};
|
|
90
98
|
type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ScalarOnly extends boolean = false> = {
|
|
91
|
-
[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>>;
|
|
92
100
|
} & {
|
|
93
101
|
$expr?: (eb: ExpressionBuilder<ToKyselySchema<Schema>, Model>) => OperandExpression<SqlBool>;
|
|
94
102
|
} & {
|
|
@@ -141,7 +149,7 @@ type BooleanFilter<Nullable extends boolean> = NullableIf<boolean, Nullable> | {
|
|
|
141
149
|
type SortOrder = 'asc' | 'desc';
|
|
142
150
|
type NullsOrder = 'first' | 'last';
|
|
143
151
|
type OrderBy<Schema extends SchemaDef, Model extends GetModels<Schema>, WithRelation extends boolean, WithAggregation extends boolean> = {
|
|
144
|
-
[Key in NonRelationFields<Schema, Model>]?:
|
|
152
|
+
[Key in NonRelationFields<Schema, Model>]?: ModelFieldIsOptional<Schema, Model, Key> extends true ? SortOrder | {
|
|
145
153
|
sort: SortOrder;
|
|
146
154
|
nulls?: NullsOrder;
|
|
147
155
|
} : SortOrder;
|
|
@@ -190,7 +198,7 @@ type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> = tr
|
|
|
190
198
|
};
|
|
191
199
|
};
|
|
192
200
|
type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
193
|
-
[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>;
|
|
194
202
|
};
|
|
195
203
|
type Subset<T, U> = {
|
|
196
204
|
[key in keyof T]: key extends keyof U ? T[key] : never;
|
|
@@ -210,19 +218,20 @@ type ToManyRelationFilter<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
210
218
|
none?: WhereInput<Schema, RelationFieldType<Schema, Model, Field>>;
|
|
211
219
|
};
|
|
212
220
|
type ToOneRelationFilter<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>> & {
|
|
213
|
-
is?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>,
|
|
214
|
-
isNot?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>,
|
|
215
|
-
},
|
|
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>>;
|
|
216
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>;
|
|
217
|
-
type
|
|
218
|
-
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']>;
|
|
219
228
|
type OptionalFieldsForCreate<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
220
|
-
[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>;
|
|
221
230
|
};
|
|
222
|
-
type GetRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
223
|
-
type OppositeRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
224
|
-
type OppositeRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
225
|
-
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;
|
|
226
235
|
type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? {
|
|
227
236
|
skip?: number;
|
|
228
237
|
take?: number;
|
|
@@ -248,20 +257,20 @@ type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<S
|
|
|
248
257
|
};
|
|
249
258
|
type OptionalWrap<Schema extends SchemaDef, Model extends GetModels<Schema>, T extends object> = Optional<T, keyof T & OptionalFieldsForCreate<Schema, Model>>;
|
|
250
259
|
type CreateScalarPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
251
|
-
[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>;
|
|
252
261
|
}>;
|
|
253
|
-
type ScalarCreatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends ScalarFields<Schema, Model, false>> =
|
|
254
|
-
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>[];
|
|
255
264
|
} : never);
|
|
256
265
|
type CreateFKPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
257
|
-
[Key in ForeignKeyFields<Schema, Model>]:
|
|
266
|
+
[Key in ForeignKeyFields<Schema, Model>]: MapModelFieldType<Schema, Model, Key>;
|
|
258
267
|
}>;
|
|
259
268
|
type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
269
|
+
connectOrCreate?: ConnectOrCreateInput<Schema, Model, Field>;
|
|
260
270
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
261
271
|
createMany?: NestedCreateManyInput<Schema, Model, Field>;
|
|
262
272
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
263
|
-
|
|
264
|
-
}, 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)>;
|
|
265
274
|
type CreateRelationPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
266
275
|
[Key in RelationFields<Schema, Model>]: CreateRelationFieldPayload<Schema, Model, Key>;
|
|
267
276
|
}>;
|
|
@@ -307,24 +316,24 @@ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
|
307
316
|
omit?: OmitInput<Schema, Model>;
|
|
308
317
|
};
|
|
309
318
|
type UpdateScalarInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
|
|
310
|
-
[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>;
|
|
311
320
|
}, Without>;
|
|
312
|
-
type ScalarUpdatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends NonRelationFields<Schema, Model>> =
|
|
313
|
-
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>>;
|
|
314
323
|
increment?: number;
|
|
315
324
|
decrement?: number;
|
|
316
325
|
multiply?: number;
|
|
317
326
|
divide?: number;
|
|
318
327
|
} : never) | (FieldIsArray<Schema, Model, Field> extends true ? {
|
|
319
|
-
set?:
|
|
320
|
-
push?: OrArray<
|
|
328
|
+
set?: MapModelFieldType<Schema, Model, Field>[];
|
|
329
|
+
push?: OrArray<MapModelFieldType<Schema, Model, Field>, true>;
|
|
321
330
|
} : never);
|
|
322
331
|
type UpdateRelationInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
|
|
323
332
|
[Key in RelationFields<Schema, Model>]?: UpdateRelationFieldPayload<Schema, Model, Key>;
|
|
324
333
|
}, Without>;
|
|
325
334
|
type UpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = UpdateScalarInput<Schema, Model, Without> & UpdateRelationInput<Schema, Model, Without>;
|
|
326
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>;
|
|
327
|
-
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<{
|
|
328
337
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
329
338
|
createMany?: NestedCreateManyInput<Schema, Model, Field>;
|
|
330
339
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
@@ -336,17 +345,17 @@ type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels
|
|
|
336
345
|
delete?: NestedDeleteInput<Schema, Model, Field>;
|
|
337
346
|
deleteMany?: NestedDeleteManyInput<Schema, Model, Field>;
|
|
338
347
|
set?: SetRelationInput<Schema, Model, Field>;
|
|
339
|
-
}
|
|
340
|
-
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<{
|
|
341
350
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
342
351
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
343
352
|
connectOrCreate?: ConnectOrCreateInput<Schema, Model, Field>;
|
|
344
353
|
update?: NestedUpdateInput<Schema, Model, Field>;
|
|
345
354
|
upsert?: NestedUpsertInput<Schema, Model, Field>;
|
|
346
|
-
} & (
|
|
355
|
+
} & (ModelFieldIsOptional<Schema, Model, Field> extends true ? {
|
|
347
356
|
disconnect?: DisconnectInput<Schema, Model, Field>;
|
|
348
357
|
delete?: NestedDeleteInput<Schema, Model, Field>;
|
|
349
|
-
} : {})
|
|
358
|
+
} : {}), FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'connectOrCreate' | 'upsert' : never>;
|
|
350
359
|
type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
351
360
|
where: WhereUniqueInput<Schema, Model>;
|
|
352
361
|
select?: SelectInput<Schema, Model, true>;
|
|
@@ -384,13 +393,13 @@ type AggregateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> =
|
|
|
384
393
|
_max?: MinMaxInput<Schema, Model>;
|
|
385
394
|
});
|
|
386
395
|
type NumericFields<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
387
|
-
[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>;
|
|
388
397
|
};
|
|
389
398
|
type SumAvgInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
390
399
|
[Key in NumericFields<Schema, Model>]?: true;
|
|
391
400
|
};
|
|
392
401
|
type MinMaxInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
393
|
-
[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;
|
|
394
403
|
};
|
|
395
404
|
type AggregateResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends AggregateArgs<Schema, Model>> = (Args extends {
|
|
396
405
|
_count: infer Count;
|
|
@@ -431,7 +440,7 @@ type GroupByArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
|
431
440
|
_max?: MinMaxInput<Schema, Model>;
|
|
432
441
|
});
|
|
433
442
|
type GroupByResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends GroupByArgs<Schema, Model>> = Array<{
|
|
434
|
-
[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>;
|
|
435
444
|
} & (Args extends {
|
|
436
445
|
_count: infer Count;
|
|
437
446
|
} ? {
|
|
@@ -473,9 +482,9 @@ type NestedUpdateManyInput<Schema extends SchemaDef, Model extends GetModels<Sch
|
|
|
473
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>>;
|
|
474
483
|
type NestedDeleteManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = OrArray<WhereInput<Schema, RelationFieldType<Schema, Model, Field>, true>>;
|
|
475
484
|
type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
476
|
-
[Key in RelationFields<Schema, Model> as
|
|
485
|
+
[Key in RelationFields<Schema, Model> as GetModelField<Schema, Model, Key>['relation'] extends {
|
|
477
486
|
references: unknown[];
|
|
478
|
-
} ? never : Key]:
|
|
487
|
+
} ? never : Key]: true;
|
|
479
488
|
};
|
|
480
489
|
|
|
481
490
|
type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
|
|
@@ -489,17 +498,15 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
489
498
|
protected readonly schema: Schema;
|
|
490
499
|
protected readonly options: ClientOptions<Schema>;
|
|
491
500
|
constructor(schema: Schema, options: ClientOptions<Schema>);
|
|
492
|
-
abstract get provider(): DataSourceProviderType;
|
|
493
501
|
transformPrimitive(value: unknown, _type: BuiltinType, _forArrayField: boolean): unknown;
|
|
494
|
-
|
|
495
|
-
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, {}>;
|
|
496
503
|
buildFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, where: boolean | object | undefined): Expression<SqlBool>;
|
|
497
504
|
protected buildCompositeFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, key: 'AND' | 'OR' | 'NOT', payload: any): Expression<SqlBool>;
|
|
498
505
|
private buildRelationFilter;
|
|
499
506
|
private buildToOneRelationFilter;
|
|
500
507
|
private buildToManyRelationFilter;
|
|
501
508
|
private buildArrayFilter;
|
|
502
|
-
buildPrimitiveFilter(eb: ExpressionBuilder<any, any>,
|
|
509
|
+
buildPrimitiveFilter(eb: ExpressionBuilder<any, any>, fieldRef: Expression<any>, fieldDef: FieldDef, payload: any): Expression<SqlBool>;
|
|
503
510
|
private buildLiteralFilter;
|
|
504
511
|
private buildStandardFilter;
|
|
505
512
|
private buildStringFilter;
|
|
@@ -510,6 +517,9 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
510
517
|
private buildBytesFilter;
|
|
511
518
|
private buildEnumFilter;
|
|
512
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>;
|
|
513
523
|
private negateSort;
|
|
514
524
|
true(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
|
|
515
525
|
false(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
|
|
@@ -518,6 +528,15 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
518
528
|
protected and(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): Expression<SqlBool>;
|
|
519
529
|
protected or(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): Expression<SqlBool>;
|
|
520
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>;
|
|
521
540
|
/**
|
|
522
541
|
* Builds an Kysely expression that returns a JSON object for the given key-value pairs.
|
|
523
542
|
*/
|
|
@@ -592,6 +611,10 @@ type OnKyselyQueryArgs<Schema extends SchemaDef> = {
|
|
|
592
611
|
proceed: ProceedKyselyQueryFunction;
|
|
593
612
|
};
|
|
594
613
|
type ProceedKyselyQueryFunction = (query: RootOperationNode) => Promise<QueryResult<any>>;
|
|
614
|
+
type OnKyselyQueryCallback<Schema extends SchemaDef> = (args: OnKyselyQueryArgs<Schema>) => Promise<QueryResult<UnknownRow>>;
|
|
615
|
+
type MutationInterceptionFilter<Schema extends SchemaDef> = (args: MutationHooksArgs<Schema>) => MaybePromise<MutationInterceptionFilterResult>;
|
|
616
|
+
type BeforeEntityMutationCallback<Schema extends SchemaDef> = (args: PluginBeforeEntityMutationArgs<Schema>) => MaybePromise<void>;
|
|
617
|
+
type AfterEntityMutationCallback<Schema extends SchemaDef> = (args: PluginAfterEntityMutationArgs<Schema>) => MaybePromise<void>;
|
|
595
618
|
/**
|
|
596
619
|
* ZenStack runtime plugin.
|
|
597
620
|
*/
|
|
@@ -615,18 +638,18 @@ interface RuntimePlugin<Schema extends SchemaDef = SchemaDef> {
|
|
|
615
638
|
/**
|
|
616
639
|
* Intercepts a Kysely query.
|
|
617
640
|
*/
|
|
618
|
-
onKyselyQuery?:
|
|
641
|
+
onKyselyQuery?: OnKyselyQueryCallback<Schema>;
|
|
619
642
|
/**
|
|
620
643
|
* This callback determines whether a mutation should be intercepted, and if so,
|
|
621
644
|
* what data should be loaded before and after the mutation.
|
|
622
645
|
*/
|
|
623
|
-
mutationInterceptionFilter?:
|
|
646
|
+
mutationInterceptionFilter?: MutationInterceptionFilter<Schema>;
|
|
624
647
|
/**
|
|
625
648
|
* Called before an entity is mutated.
|
|
626
649
|
* @param args.entity Only available if `loadBeforeMutationEntity` is set to true in the
|
|
627
650
|
* return value of {@link RuntimePlugin.mutationInterceptionFilter}.
|
|
628
651
|
*/
|
|
629
|
-
beforeEntityMutation?:
|
|
652
|
+
beforeEntityMutation?: BeforeEntityMutationCallback<Schema>;
|
|
630
653
|
/**
|
|
631
654
|
* Called after an entity is mutated.
|
|
632
655
|
* @param args.beforeMutationEntity Only available if `loadBeforeMutationEntity` is set to true in the
|
|
@@ -634,7 +657,7 @@ interface RuntimePlugin<Schema extends SchemaDef = SchemaDef> {
|
|
|
634
657
|
* @param args.afterMutationEntity Only available if `loadAfterMutationEntity` is set to true in the
|
|
635
658
|
* return value of {@link RuntimePlugin.mutationInterceptionFilter}.
|
|
636
659
|
*/
|
|
637
|
-
afterEntityMutation?:
|
|
660
|
+
afterEntityMutation?: AfterEntityMutationCallback<Schema>;
|
|
638
661
|
}
|
|
639
662
|
type OnQueryHooks<Schema extends SchemaDef = SchemaDef> = {
|
|
640
663
|
[Model in GetModels<Schema> as Uncapitalize<Model>]?: OnQueryOperationHooks<Schema, Model>;
|
|
@@ -649,6 +672,7 @@ type OnQueryOperationHooks<Schema extends SchemaDef, Model extends GetModels<Sch
|
|
|
649
672
|
operation: CrudOperation;
|
|
650
673
|
args: unknown;
|
|
651
674
|
query: (args: unknown) => Promise<unknown>;
|
|
675
|
+
client: ClientContract<Schema>;
|
|
652
676
|
}) => MaybePromise<unknown>;
|
|
653
677
|
};
|
|
654
678
|
type OnQueryHookContext<Schema extends SchemaDef, Model extends GetModels<Schema>, Operation extends keyof ModelOperations<Schema, Model>> = {
|
|
@@ -888,7 +912,7 @@ interface ClientConstructor {
|
|
|
888
912
|
* CRUD operations.
|
|
889
913
|
*/
|
|
890
914
|
type CRUD = 'create' | 'read' | 'update' | 'delete';
|
|
891
|
-
|
|
915
|
+
type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>> = Omit<{
|
|
892
916
|
/**
|
|
893
917
|
* Returns a list of entities.
|
|
894
918
|
* @param args - query args
|
|
@@ -1390,6 +1414,6 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1390
1414
|
* });
|
|
1391
1415
|
*/
|
|
1392
1416
|
groupBy<T extends GroupByArgs<Schema, Model>>(args: Subset<T, GroupByArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<GroupByResult<Schema, Model, T>>>;
|
|
1393
|
-
}
|
|
1417
|
+
}, IsDelegateModel<Schema, Model> extends true ? 'create' | 'createMany' | 'createManyAndReturn' | 'upsert' : never>;
|
|
1394
1418
|
|
|
1395
|
-
export { type
|
|
1419
|
+
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 };
|