@zenstackhq/runtime 3.0.0-alpha.9 → 3.0.0-beta.1
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-BiU0iYAh.d.cts → contract-CusA0mQO.d.cts} +388 -297
- package/dist/{contract-BiU0iYAh.d.ts → contract-CusA0mQO.d.ts} +388 -297
- package/dist/helpers.cjs +31 -0
- package/dist/helpers.cjs.map +1 -0
- package/dist/helpers.d.cts +1 -0
- package/dist/helpers.d.ts +1 -0
- package/dist/helpers.js +6 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.cjs +2197 -1203
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +2120 -1127
- package/dist/index.js.map +1 -1
- package/dist/plugins/{policy.cjs → policy/index.cjs} +565 -272
- 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} +568 -275
- package/dist/plugins/policy/index.js.map +1 -0
- package/dist/plugins/policy/plugin.zmodel +33 -0
- package/dist/schema.cjs +4 -1
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +1 -0
- package/dist/schema.d.ts +1 -0
- package/dist/schema.js +4 -1
- package/dist/schema.js.map +1 -1
- package/package.json +28 -14
- package/dist/plugins/policy.cjs.map +0 -1
- package/dist/plugins/policy.js.map +0 -1
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
import Decimal, { Decimal as Decimal$1 } from 'decimal.js';
|
|
2
|
-
import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields,
|
|
3
|
-
import { Generated, Kysely, ExpressionBuilder, OperandExpression, SqlBool, SelectQueryBuilder, Expression, ExpressionWrapper, RootOperationNode, QueryResult, UnknownRow,
|
|
2
|
+
import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetModel, FieldDef, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, BuiltinType, IsDelegateModel, GetModelDiscriminator, GetSubModels, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, ModelDef, DataSourceProviderType, ProcedureDef } from '@zenstackhq/sdk/schema';
|
|
3
|
+
import { Generated, Kysely, ExpressionBuilder, OperandExpression, SqlBool, SelectQueryBuilder, Expression, ExpressionWrapper, OperationNode, RootOperationNode, QueryResult, UnknownRow, Dialect, 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>>;
|
|
6
6
|
type NullableIf<T, Condition extends boolean> = Condition extends true ? T | null : T;
|
|
7
|
+
type _Preserve = Date | Function | Decimal | Uint8Array | JsonObject | JsonValue;
|
|
8
|
+
type _Depth = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
9
|
+
type Simplify<T, D extends number = 6> = D extends 0 ? T : T extends object ? T extends _Preserve ? T : {
|
|
10
|
+
[K in keyof T]: Simplify<T[K], _Depth[D]>;
|
|
11
|
+
} & {} : T;
|
|
7
12
|
type WrapType<T, Optional = false, Array = false> = Optional extends true ? T | null : Array extends true ? T[] : T;
|
|
8
|
-
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;
|
|
9
25
|
type JsonValue = string | number | boolean | null | JsonObject | JsonArray;
|
|
10
26
|
type JsonObject = {
|
|
11
27
|
[key: string]: JsonValue;
|
|
@@ -36,18 +52,21 @@ type ToKyselySchema<Schema extends SchemaDef> = {
|
|
|
36
52
|
};
|
|
37
53
|
type ToKysely<Schema extends SchemaDef> = Kysely<ToKyselySchema<Schema>>;
|
|
38
54
|
type ToKyselyTable<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
39
|
-
[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>;
|
|
40
56
|
};
|
|
41
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;
|
|
42
58
|
type WrapNull<T, Null> = Null extends true ? T | null : T;
|
|
43
|
-
type MapType$1<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends
|
|
44
|
-
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>;
|
|
45
61
|
|
|
46
|
-
type DefaultModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Omit = undefined, Optional = false, Array = false> = WrapType<{
|
|
47
|
-
[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>;
|
|
48
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;
|
|
49
68
|
type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit> = {
|
|
50
|
-
[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;
|
|
51
70
|
};
|
|
52
71
|
type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
|
|
53
72
|
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
|
|
@@ -63,15 +82,21 @@ type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args
|
|
|
63
82
|
include: infer I;
|
|
64
83
|
omit?: infer O;
|
|
65
84
|
} ? DefaultModelResult<Schema, Model, O> & {
|
|
66
|
-
[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>>;
|
|
67
86
|
} : Args extends {
|
|
68
87
|
omit: infer O;
|
|
69
88
|
} ? DefaultModelResult<Schema, Model, O> : DefaultModelResult<Schema, Model>, Optional, Array>;
|
|
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
|
+
}>;
|
|
70
95
|
type BatchResult = {
|
|
71
96
|
count: number;
|
|
72
97
|
};
|
|
73
|
-
type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ScalarOnly extends boolean = false> = {
|
|
74
|
-
[Key in
|
|
98
|
+
type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ScalarOnly extends boolean = false, WithAggregations 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> : FieldIsArray<Schema, Model, Key> extends true ? ArrayFilter<Schema, GetModelFieldType<Schema, Model, Key>> : GetModelFieldType<Schema, Model, Key> extends GetEnums<Schema> ? EnumFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>, WithAggregations> : PrimitiveFilter<Schema, GetModelFieldType<Schema, Model, Key>, ModelFieldIsOptional<Schema, Model, Key>, WithAggregations>;
|
|
75
100
|
} & {
|
|
76
101
|
$expr?: (eb: ExpressionBuilder<ToKyselySchema<Schema>, Model>) => OperandExpression<SqlBool>;
|
|
77
102
|
} & {
|
|
@@ -79,21 +104,26 @@ type WhereInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Scala
|
|
|
79
104
|
OR?: WhereInput<Schema, Model, ScalarOnly>[];
|
|
80
105
|
NOT?: OrArray<WhereInput<Schema, Model, ScalarOnly>>;
|
|
81
106
|
};
|
|
82
|
-
type EnumFilter<Schema extends SchemaDef, T extends GetEnums<Schema>, Nullable extends boolean> = NullableIf<keyof GetEnum<Schema, T>, Nullable> | {
|
|
107
|
+
type EnumFilter<Schema extends SchemaDef, T extends GetEnums<Schema>, Nullable extends boolean, WithAggregations extends boolean> = NullableIf<keyof GetEnum<Schema, T>, Nullable> | ({
|
|
83
108
|
equals?: NullableIf<keyof GetEnum<Schema, T>, Nullable>;
|
|
84
109
|
in?: (keyof GetEnum<Schema, T>)[];
|
|
85
110
|
notIn?: (keyof GetEnum<Schema, T>)[];
|
|
86
|
-
not?: EnumFilter<Schema, T, Nullable>;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
111
|
+
not?: EnumFilter<Schema, T, Nullable, WithAggregations>;
|
|
112
|
+
} & (WithAggregations extends true ? {
|
|
113
|
+
_count?: NumberFilter<Schema, 'Int', false, false>;
|
|
114
|
+
_min?: EnumFilter<Schema, T, false, false>;
|
|
115
|
+
_max?: EnumFilter<Schema, T, false, false>;
|
|
116
|
+
} : {}));
|
|
117
|
+
type ArrayFilter<Schema extends SchemaDef, T extends string> = {
|
|
118
|
+
equals?: MapScalarType<Schema, T>[] | null;
|
|
119
|
+
has?: MapScalarType<Schema, T> | null;
|
|
120
|
+
hasEvery?: MapScalarType<Schema, T>[];
|
|
121
|
+
hasSome?: MapScalarType<Schema, T>[];
|
|
93
122
|
isEmpty?: boolean;
|
|
94
123
|
};
|
|
95
|
-
type
|
|
96
|
-
type
|
|
124
|
+
type MapScalarType<Schema extends SchemaDef, T extends string> = T extends GetEnums<Schema> ? keyof GetEnum<Schema, T> : MapBaseType$1<T>;
|
|
125
|
+
type PrimitiveFilter<Schema extends SchemaDef, T extends string, Nullable extends boolean, WithAggregations extends boolean> = T extends 'String' ? StringFilter<Schema, Nullable, WithAggregations> : T extends 'Int' | 'Float' | 'Decimal' | 'BigInt' ? NumberFilter<Schema, T, Nullable, WithAggregations> : T extends 'Boolean' ? BooleanFilter<Schema, Nullable, WithAggregations> : T extends 'DateTime' ? DateTimeFilter<Schema, Nullable, WithAggregations> : T extends 'Bytes' ? BytesFilter<Schema, Nullable, WithAggregations> : T extends 'Json' ? 'Not implemented yet' : never;
|
|
126
|
+
type CommonPrimitiveFilter<Schema extends SchemaDef, DataType, T extends BuiltinType, Nullable extends boolean, WithAggregations extends boolean> = {
|
|
97
127
|
equals?: NullableIf<DataType, Nullable>;
|
|
98
128
|
in?: DataType[];
|
|
99
129
|
notIn?: DataType[];
|
|
@@ -101,30 +131,53 @@ type CommonPrimitiveFilter<DataType, T extends BuiltinType, Nullable extends boo
|
|
|
101
131
|
lte?: DataType;
|
|
102
132
|
gt?: DataType;
|
|
103
133
|
gte?: DataType;
|
|
104
|
-
not?: PrimitiveFilter<T, Nullable>;
|
|
134
|
+
not?: PrimitiveFilter<Schema, T, Nullable, WithAggregations>;
|
|
105
135
|
};
|
|
106
|
-
type StringFilter<Nullable extends boolean> = NullableIf<string, Nullable> | (CommonPrimitiveFilter<string, 'String', Nullable> & {
|
|
136
|
+
type StringFilter<Schema extends SchemaDef, Nullable extends boolean, WithAggregations extends boolean> = NullableIf<string, Nullable> | (CommonPrimitiveFilter<Schema, string, 'String', Nullable, WithAggregations> & {
|
|
107
137
|
contains?: string;
|
|
108
138
|
startsWith?: string;
|
|
109
139
|
endsWith?: string;
|
|
140
|
+
} & (WithAggregations extends true ? {
|
|
141
|
+
_count?: NumberFilter<Schema, 'Int', false, false>;
|
|
142
|
+
_min?: StringFilter<Schema, false, false>;
|
|
143
|
+
_max?: StringFilter<Schema, false, false>;
|
|
144
|
+
} : {}) & (ProviderSupportsCaseSensitivity<Schema> extends true ? {
|
|
110
145
|
mode?: 'default' | 'insensitive';
|
|
111
|
-
});
|
|
112
|
-
type NumberFilter<T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean> = NullableIf<number | bigint, Nullable> | CommonPrimitiveFilter<number, T, Nullable
|
|
113
|
-
|
|
114
|
-
|
|
146
|
+
} : {}));
|
|
147
|
+
type NumberFilter<Schema extends SchemaDef, T extends 'Int' | 'Float' | 'Decimal' | 'BigInt', Nullable extends boolean, WithAggregations extends boolean> = NullableIf<number | bigint, Nullable> | (CommonPrimitiveFilter<Schema, number, T, Nullable, WithAggregations> & (WithAggregations extends true ? {
|
|
148
|
+
_count?: NumberFilter<Schema, 'Int', false, false>;
|
|
149
|
+
_avg?: NumberFilter<Schema, T, false, false>;
|
|
150
|
+
_sum?: NumberFilter<Schema, T, false, false>;
|
|
151
|
+
_min?: NumberFilter<Schema, T, false, false>;
|
|
152
|
+
_max?: NumberFilter<Schema, T, false, false>;
|
|
153
|
+
} : {}));
|
|
154
|
+
type DateTimeFilter<Schema extends SchemaDef, Nullable extends boolean, WithAggregations extends boolean> = NullableIf<Date | string, Nullable> | (CommonPrimitiveFilter<Schema, Date | string, 'DateTime', Nullable, WithAggregations> & (WithAggregations extends true ? {
|
|
155
|
+
_count?: NumberFilter<Schema, 'Int', false, false>;
|
|
156
|
+
_min?: DateTimeFilter<Schema, false, false>;
|
|
157
|
+
_max?: DateTimeFilter<Schema, false, false>;
|
|
158
|
+
} : {}));
|
|
159
|
+
type BytesFilter<Schema extends SchemaDef, Nullable extends boolean, WithAggregations extends boolean> = NullableIf<Uint8Array | Buffer, Nullable> | ({
|
|
115
160
|
equals?: NullableIf<Uint8Array, Nullable>;
|
|
116
161
|
in?: Uint8Array[];
|
|
117
162
|
notIn?: Uint8Array[];
|
|
118
|
-
not?: BytesFilter<Nullable>;
|
|
119
|
-
}
|
|
120
|
-
|
|
163
|
+
not?: BytesFilter<Schema, Nullable, WithAggregations>;
|
|
164
|
+
} & (WithAggregations extends true ? {
|
|
165
|
+
_count?: NumberFilter<Schema, 'Int', false, false>;
|
|
166
|
+
_min?: BytesFilter<Schema, false, false>;
|
|
167
|
+
_max?: BytesFilter<Schema, false, false>;
|
|
168
|
+
} : {}));
|
|
169
|
+
type BooleanFilter<Schema extends SchemaDef, Nullable extends boolean, WithAggregations extends boolean> = NullableIf<boolean, Nullable> | ({
|
|
121
170
|
equals?: NullableIf<boolean, Nullable>;
|
|
122
|
-
not?: BooleanFilter<Nullable>;
|
|
123
|
-
}
|
|
171
|
+
not?: BooleanFilter<Schema, Nullable, WithAggregations>;
|
|
172
|
+
} & (WithAggregations extends true ? {
|
|
173
|
+
_count?: NumberFilter<Schema, 'Int', false, false>;
|
|
174
|
+
_min?: BooleanFilter<Schema, false, false>;
|
|
175
|
+
_max?: BooleanFilter<Schema, false, false>;
|
|
176
|
+
} : {}));
|
|
124
177
|
type SortOrder = 'asc' | 'desc';
|
|
125
178
|
type NullsOrder = 'first' | 'last';
|
|
126
179
|
type OrderBy<Schema extends SchemaDef, Model extends GetModels<Schema>, WithRelation extends boolean, WithAggregation extends boolean> = {
|
|
127
|
-
[Key in NonRelationFields<Schema, Model>]?:
|
|
180
|
+
[Key in NonRelationFields<Schema, Model>]?: ModelFieldIsOptional<Schema, Model, Key> extends true ? SortOrder | {
|
|
128
181
|
sort: SortOrder;
|
|
129
182
|
nulls?: NullsOrder;
|
|
130
183
|
} : SortOrder;
|
|
@@ -133,47 +186,41 @@ type OrderBy<Schema extends SchemaDef, Model extends GetModels<Schema>, WithRela
|
|
|
133
186
|
_count?: SortOrder;
|
|
134
187
|
} : OrderBy<Schema, RelationFieldType<Schema, Model, Key>, WithRelation, WithAggregation>;
|
|
135
188
|
} : {}) & (WithAggregation extends true ? {
|
|
136
|
-
_count?: OrderBy<Schema, Model,
|
|
189
|
+
_count?: OrderBy<Schema, Model, false, false>;
|
|
190
|
+
_min?: MinMaxInput<Schema, Model, SortOrder>;
|
|
191
|
+
_max?: MinMaxInput<Schema, Model, SortOrder>;
|
|
137
192
|
} & (NumericFields<Schema, Model> extends never ? {} : {
|
|
138
|
-
_avg?: SumAvgInput<Schema, Model>;
|
|
139
|
-
_sum?: SumAvgInput<Schema, Model>;
|
|
140
|
-
_min?: MinMaxInput<Schema, Model>;
|
|
141
|
-
_max?: MinMaxInput<Schema, Model>;
|
|
193
|
+
_avg?: SumAvgInput<Schema, Model, SortOrder>;
|
|
194
|
+
_sum?: SumAvgInput<Schema, Model, SortOrder>;
|
|
142
195
|
}) : {});
|
|
143
196
|
type WhereUniqueInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = AtLeast<{
|
|
144
197
|
[Key in keyof GetModel<Schema, Model>['uniqueFields']]?: GetModel<Schema, Model>['uniqueFields'][Key] extends Pick<FieldDef, 'type'> ? MapFieldDefType<Schema, GetModel<Schema, Model>['uniqueFields'][Key]> : {
|
|
145
198
|
[Key1 in keyof GetModel<Schema, Model>['uniqueFields'][Key]]: GetModel<Schema, Model>['uniqueFields'][Key][Key1] extends Pick<FieldDef, 'type'> ? MapFieldDefType<Schema, GetModel<Schema, Model>['uniqueFields'][Key][Key1]> : never;
|
|
146
199
|
};
|
|
147
200
|
} & WhereInput<Schema, Model>, Extract<keyof GetModel<Schema, Model>['uniqueFields'], string>>;
|
|
148
|
-
type
|
|
149
|
-
[Key in NonRelationFields<Schema, Model>]?:
|
|
201
|
+
type OmitInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
202
|
+
[Key in NonRelationFields<Schema, Model>]?: boolean;
|
|
150
203
|
};
|
|
151
204
|
type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean> = {
|
|
152
|
-
select?:
|
|
153
|
-
include?:
|
|
154
|
-
omit?:
|
|
205
|
+
select?: SelectInput<Schema, Model, AllowCount, boolean>;
|
|
206
|
+
include?: IncludeInput<Schema, Model>;
|
|
207
|
+
omit?: OmitInput<Schema, Model>;
|
|
155
208
|
};
|
|
156
|
-
type
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
cursor?: WhereUniqueInput<Schema, Model>;
|
|
161
|
-
};
|
|
162
|
-
type Select<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean, AllowRelation extends boolean = true> = {
|
|
163
|
-
[Key in NonRelationFields<Schema, Model>]?: true;
|
|
164
|
-
} & (AllowRelation extends true ? Include<Schema, Model> : {}) & // relation fields
|
|
165
|
-
(AllowCount extends true ? {
|
|
209
|
+
type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
|
|
210
|
+
[Key in NonRelationFields<Schema, Model>]?: boolean;
|
|
211
|
+
} & (AllowRelation extends true ? IncludeInput<Schema, Model> : {}) & // relation fields
|
|
212
|
+
(AllowCount extends true ? HasToManyRelations<Schema, Model> extends true ? {
|
|
166
213
|
_count?: SelectCount<Schema, Model>;
|
|
167
|
-
} : {});
|
|
168
|
-
type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> =
|
|
214
|
+
} : {} : {});
|
|
215
|
+
type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>> = boolean | {
|
|
169
216
|
select: {
|
|
170
|
-
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]
|
|
217
|
+
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]?: boolean | {
|
|
171
218
|
where: WhereInput<Schema, RelationFieldType<Schema, Model, Key>, false>;
|
|
172
219
|
};
|
|
173
220
|
};
|
|
174
221
|
};
|
|
175
|
-
type
|
|
176
|
-
[Key in RelationFields<Schema, Model>]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true :
|
|
222
|
+
type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
223
|
+
[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>;
|
|
177
224
|
};
|
|
178
225
|
type Subset<T, U> = {
|
|
179
226
|
[key in keyof T]: key extends keyof U ? T[key] : never;
|
|
@@ -193,56 +240,64 @@ type ToManyRelationFilter<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
193
240
|
none?: WhereInput<Schema, RelationFieldType<Schema, Model, Field>>;
|
|
194
241
|
};
|
|
195
242
|
type ToOneRelationFilter<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>> & {
|
|
196
|
-
is?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>,
|
|
197
|
-
isNot?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>,
|
|
198
|
-
},
|
|
243
|
+
is?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
244
|
+
isNot?: NullableIf<WhereInput<Schema, RelationFieldType<Schema, Model, Field>>, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
245
|
+
}, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
199
246
|
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>;
|
|
200
|
-
type
|
|
201
|
-
type
|
|
247
|
+
type MapModelFieldType<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = MapFieldDefType<Schema, GetModelField<Schema, Model, Field>>;
|
|
248
|
+
type MapTypeDefFieldType<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Field extends GetTypeDefFields<Schema, TypeDef>> = MapFieldDefType<Schema, GetTypeDefField<Schema, TypeDef, Field>>;
|
|
249
|
+
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']>;
|
|
202
250
|
type OptionalFieldsForCreate<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
203
|
-
[Key in
|
|
251
|
+
[Key in GetModelFields<Schema, Model> as ModelFieldIsOptional<Schema, Model, Key> extends true ? Key : FieldHasDefault<Schema, Model, Key> extends true ? Key : FieldIsArray<Schema, Model, Key> extends true ? Key : GetModelField<Schema, Model, Key>['updatedAt'] extends true ? Key : never]: GetModelField<Schema, Model, Key>;
|
|
252
|
+
};
|
|
253
|
+
type GetRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['relation'];
|
|
254
|
+
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;
|
|
255
|
+
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'] : []) : [];
|
|
256
|
+
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;
|
|
257
|
+
type FilterArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
258
|
+
where?: WhereInput<Schema, Model>;
|
|
204
259
|
};
|
|
205
|
-
type
|
|
206
|
-
type OppositeRelation<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetFields<Schema, Model>, FT = FieldType<Schema, Model, Field>> = FT extends GetModels<Schema> ? GetRelation<Schema, Model, Field> extends RelationInfo ? GetRelation<Schema, Model, Field>['opposite'] extends GetFields<Schema, FT> ? Schema['models'][FT]['fields'][GetRelation<Schema, Model, Field>['opposite']]['relation'] : never : never : never;
|
|
207
|
-
type OppositeRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetFields<Schema, Model>, Opposite = OppositeRelation<Schema, Model, Field>> = Opposite extends RelationInfo ? (Opposite['fields'] extends string[] ? Opposite['fields'] : []) : [];
|
|
208
|
-
type OppositeRelationAndFK<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetFields<Schema, Model>, FT = FieldType<Schema, Model, Field>, Relation = GetField<Schema, Model, Field>['relation'], Opposite = Relation extends RelationInfo ? Relation['opposite'] : never> = FT extends GetModels<Schema> ? Opposite extends GetFields<Schema, FT> ? Opposite | OppositeRelationFields<Schema, Model, Field>[number] : never : never;
|
|
209
|
-
type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? {
|
|
260
|
+
type SortAndTakeArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
210
261
|
skip?: number;
|
|
211
262
|
take?: number;
|
|
212
263
|
orderBy?: OrArray<OrderBy<Schema, Model, true, false>>;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
264
|
+
cursor?: WhereUniqueInput<Schema, Model>;
|
|
265
|
+
};
|
|
266
|
+
type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = ProviderSupportsDistinct<Schema> extends true ? (Collection extends true ? SortAndTakeArgs<Schema, Model> & {
|
|
267
|
+
distinct?: OrArray<NonRelationFields<Schema, Model>>;
|
|
268
|
+
} : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model> : {}) & SelectIncludeOmit<Schema, Model, Collection> : (Collection extends true ? SortAndTakeArgs<Schema, Model> : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model> : {}) & SelectIncludeOmit<Schema, Model, Collection>;
|
|
269
|
+
type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = FindArgs<Schema, Model, true>;
|
|
270
|
+
type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = FindArgs<Schema, Model, false>;
|
|
216
271
|
type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
217
272
|
where?: WhereUniqueInput<Schema, Model>;
|
|
218
273
|
} & SelectIncludeOmit<Schema, Model, true>;
|
|
219
274
|
type CreateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
220
275
|
data: CreateInput<Schema, Model>;
|
|
221
|
-
select?:
|
|
222
|
-
include?:
|
|
223
|
-
omit?:
|
|
276
|
+
select?: SelectInput<Schema, Model, true>;
|
|
277
|
+
include?: IncludeInput<Schema, Model>;
|
|
278
|
+
omit?: OmitInput<Schema, Model>;
|
|
224
279
|
};
|
|
225
280
|
type CreateManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = CreateManyInput<Schema, Model>;
|
|
226
281
|
type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = CreateManyInput<Schema, Model> & {
|
|
227
|
-
select?:
|
|
228
|
-
omit?:
|
|
282
|
+
select?: SelectInput<Schema, Model, false, false>;
|
|
283
|
+
omit?: OmitInput<Schema, Model>;
|
|
229
284
|
};
|
|
230
285
|
type OptionalWrap<Schema extends SchemaDef, Model extends GetModels<Schema>, T extends object> = Optional<T, keyof T & OptionalFieldsForCreate<Schema, Model>>;
|
|
231
286
|
type CreateScalarPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
232
|
-
[Key in ScalarFields<Schema, Model, false>]: ScalarCreatePayload<Schema, Model, Key>;
|
|
287
|
+
[Key in ScalarFields<Schema, Model, false> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]: ScalarCreatePayload<Schema, Model, Key>;
|
|
233
288
|
}>;
|
|
234
|
-
type ScalarCreatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends ScalarFields<Schema, Model, false>> =
|
|
235
|
-
set?:
|
|
289
|
+
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 ? {
|
|
290
|
+
set?: MapModelFieldType<Schema, Model, Field>;
|
|
236
291
|
} : never);
|
|
237
292
|
type CreateFKPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
238
|
-
[Key in ForeignKeyFields<Schema, Model>]:
|
|
293
|
+
[Key in ForeignKeyFields<Schema, Model>]: MapModelFieldType<Schema, Model, Key>;
|
|
239
294
|
}>;
|
|
240
295
|
type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
296
|
+
connectOrCreate?: ConnectOrCreateInput<Schema, Model, Field>;
|
|
241
297
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
242
298
|
createMany?: NestedCreateManyInput<Schema, Model, Field>;
|
|
243
299
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
244
|
-
|
|
245
|
-
}, FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany'>;
|
|
300
|
+
}, (FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany') | (FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' : never)>;
|
|
246
301
|
type CreateRelationPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
|
|
247
302
|
[Key in RelationFields<Schema, Model>]: CreateRelationFieldPayload<Schema, Model, Key>;
|
|
248
303
|
}>;
|
|
@@ -265,14 +320,14 @@ type NestedCreateManyInput<Schema extends SchemaDef, Model extends GetModels<Sch
|
|
|
265
320
|
type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
266
321
|
data: UpdateInput<Schema, Model>;
|
|
267
322
|
where: WhereUniqueInput<Schema, Model>;
|
|
268
|
-
select?:
|
|
269
|
-
include?:
|
|
270
|
-
omit?:
|
|
323
|
+
select?: SelectInput<Schema, Model, true>;
|
|
324
|
+
include?: IncludeInput<Schema, Model>;
|
|
325
|
+
omit?: OmitInput<Schema, Model>;
|
|
271
326
|
};
|
|
272
327
|
type UpdateManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = UpdateManyPayload<Schema, Model>;
|
|
273
328
|
type UpdateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = UpdateManyPayload<Schema, Model> & {
|
|
274
|
-
select?:
|
|
275
|
-
omit?:
|
|
329
|
+
select?: SelectInput<Schema, Model, false, false>;
|
|
330
|
+
omit?: OmitInput<Schema, Model>;
|
|
276
331
|
};
|
|
277
332
|
type UpdateManyPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = {
|
|
278
333
|
data: OrArray<UpdateScalarInput<Schema, Model, Without>>;
|
|
@@ -283,29 +338,29 @@ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
|
283
338
|
create: CreateInput<Schema, Model>;
|
|
284
339
|
update: UpdateInput<Schema, Model>;
|
|
285
340
|
where: WhereUniqueInput<Schema, Model>;
|
|
286
|
-
select?:
|
|
287
|
-
include?:
|
|
288
|
-
omit?:
|
|
341
|
+
select?: SelectInput<Schema, Model, true>;
|
|
342
|
+
include?: IncludeInput<Schema, Model>;
|
|
343
|
+
omit?: OmitInput<Schema, Model>;
|
|
289
344
|
};
|
|
290
345
|
type UpdateScalarInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
|
|
291
|
-
[Key in NonRelationFields<Schema, Model>]?: ScalarUpdatePayload<Schema, Model, Key>;
|
|
346
|
+
[Key in NonRelationFields<Schema, Model> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]?: ScalarUpdatePayload<Schema, Model, Key>;
|
|
292
347
|
}, Without>;
|
|
293
|
-
type ScalarUpdatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends NonRelationFields<Schema, Model>> =
|
|
294
|
-
set?: NullableIf<number,
|
|
348
|
+
type ScalarUpdatePayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends NonRelationFields<Schema, Model>> = MapModelFieldType<Schema, Model, Field> | (Field extends NumericFields<Schema, Model> ? {
|
|
349
|
+
set?: NullableIf<number, ModelFieldIsOptional<Schema, Model, Field>>;
|
|
295
350
|
increment?: number;
|
|
296
351
|
decrement?: number;
|
|
297
352
|
multiply?: number;
|
|
298
353
|
divide?: number;
|
|
299
354
|
} : never) | (FieldIsArray<Schema, Model, Field> extends true ? {
|
|
300
|
-
set?:
|
|
301
|
-
push?: OrArray<
|
|
355
|
+
set?: MapModelFieldType<Schema, Model, Field>[];
|
|
356
|
+
push?: OrArray<MapModelFieldType<Schema, Model, Field>, true>;
|
|
302
357
|
} : never);
|
|
303
358
|
type UpdateRelationInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
|
|
304
359
|
[Key in RelationFields<Schema, Model>]?: UpdateRelationFieldPayload<Schema, Model, Key>;
|
|
305
360
|
}, Without>;
|
|
306
361
|
type UpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = UpdateScalarInput<Schema, Model, Without> & UpdateRelationInput<Schema, Model, Without>;
|
|
307
362
|
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>;
|
|
308
|
-
type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = {
|
|
363
|
+
type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
309
364
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
310
365
|
createMany?: NestedCreateManyInput<Schema, Model, Field>;
|
|
311
366
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
@@ -317,22 +372,22 @@ type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels
|
|
|
317
372
|
delete?: NestedDeleteInput<Schema, Model, Field>;
|
|
318
373
|
deleteMany?: NestedDeleteManyInput<Schema, Model, Field>;
|
|
319
374
|
set?: SetRelationInput<Schema, Model, Field>;
|
|
320
|
-
}
|
|
321
|
-
type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = {
|
|
375
|
+
}, FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' | 'upsert' : never>;
|
|
376
|
+
type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = Omit<{
|
|
322
377
|
create?: NestedCreateInput<Schema, Model, Field>;
|
|
323
378
|
connect?: ConnectInput<Schema, Model, Field>;
|
|
324
379
|
connectOrCreate?: ConnectOrCreateInput<Schema, Model, Field>;
|
|
325
380
|
update?: NestedUpdateInput<Schema, Model, Field>;
|
|
326
381
|
upsert?: NestedUpsertInput<Schema, Model, Field>;
|
|
327
|
-
} & (
|
|
382
|
+
} & (ModelFieldIsOptional<Schema, Model, Field> extends true ? {
|
|
328
383
|
disconnect?: DisconnectInput<Schema, Model, Field>;
|
|
329
384
|
delete?: NestedDeleteInput<Schema, Model, Field>;
|
|
330
|
-
} : {})
|
|
385
|
+
} : {}), FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'connectOrCreate' | 'upsert' : never>;
|
|
331
386
|
type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
332
387
|
where: WhereUniqueInput<Schema, Model>;
|
|
333
|
-
select?:
|
|
334
|
-
include?:
|
|
335
|
-
omit?:
|
|
388
|
+
select?: SelectInput<Schema, Model, true>;
|
|
389
|
+
include?: IncludeInput<Schema, Model>;
|
|
390
|
+
omit?: OmitInput<Schema, Model>;
|
|
336
391
|
};
|
|
337
392
|
type DeleteManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
338
393
|
where?: WhereInput<Schema, Model>;
|
|
@@ -358,20 +413,20 @@ type AggregateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> =
|
|
|
358
413
|
orderBy?: OrArray<OrderBy<Schema, Model, true, false>>;
|
|
359
414
|
} & {
|
|
360
415
|
_count?: true | CountAggregateInput<Schema, Model>;
|
|
416
|
+
_min?: MinMaxInput<Schema, Model, true>;
|
|
417
|
+
_max?: MinMaxInput<Schema, Model, true>;
|
|
361
418
|
} & (NumericFields<Schema, Model> extends never ? {} : {
|
|
362
|
-
_avg?: SumAvgInput<Schema, Model>;
|
|
363
|
-
_sum?: SumAvgInput<Schema, Model>;
|
|
364
|
-
_min?: MinMaxInput<Schema, Model>;
|
|
365
|
-
_max?: MinMaxInput<Schema, Model>;
|
|
419
|
+
_avg?: SumAvgInput<Schema, Model, true>;
|
|
420
|
+
_sum?: SumAvgInput<Schema, Model, true>;
|
|
366
421
|
});
|
|
367
422
|
type NumericFields<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
368
|
-
[Key in
|
|
423
|
+
[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>;
|
|
369
424
|
};
|
|
370
|
-
type SumAvgInput<Schema extends SchemaDef, Model extends GetModels<Schema
|
|
371
|
-
[Key in NumericFields<Schema, Model>]?:
|
|
425
|
+
type SumAvgInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ValueType> = {
|
|
426
|
+
[Key in NumericFields<Schema, Model>]?: ValueType;
|
|
372
427
|
};
|
|
373
|
-
type MinMaxInput<Schema extends SchemaDef, Model extends GetModels<Schema
|
|
374
|
-
[Key in
|
|
428
|
+
type MinMaxInput<Schema extends SchemaDef, Model extends GetModels<Schema>, ValueType> = {
|
|
429
|
+
[Key in GetModelFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? never : FieldIsRelation<Schema, Model, Key> extends true ? never : Key]?: ValueType;
|
|
375
430
|
};
|
|
376
431
|
type AggregateResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends AggregateArgs<Schema, Model>> = (Args extends {
|
|
377
432
|
_count: infer Count;
|
|
@@ -397,22 +452,23 @@ type AggregateResult<Schema extends SchemaDef, Model extends GetModels<Schema>,
|
|
|
397
452
|
type AggCommonOutput<Input> = Input extends true ? number : Input extends {} ? {
|
|
398
453
|
[Key in keyof Input]: number;
|
|
399
454
|
} : never;
|
|
455
|
+
type GroupByHaving<Schema extends SchemaDef, Model extends GetModels<Schema>> = Omit<WhereInput<Schema, Model, true, true>, '$expr'>;
|
|
400
456
|
type GroupByArgs<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
401
457
|
where?: WhereInput<Schema, Model>;
|
|
402
458
|
orderBy?: OrArray<OrderBy<Schema, Model, false, true>>;
|
|
403
459
|
by: NonRelationFields<Schema, Model> | NonEmptyArray<NonRelationFields<Schema, Model>>;
|
|
404
|
-
having?:
|
|
460
|
+
having?: GroupByHaving<Schema, Model>;
|
|
405
461
|
take?: number;
|
|
406
462
|
skip?: number;
|
|
407
463
|
_count?: true | CountAggregateInput<Schema, Model>;
|
|
464
|
+
_min?: MinMaxInput<Schema, Model, true>;
|
|
465
|
+
_max?: MinMaxInput<Schema, Model, true>;
|
|
408
466
|
} & (NumericFields<Schema, Model> extends never ? {} : {
|
|
409
|
-
_avg?: SumAvgInput<Schema, Model>;
|
|
410
|
-
_sum?: SumAvgInput<Schema, Model>;
|
|
411
|
-
_min?: MinMaxInput<Schema, Model>;
|
|
412
|
-
_max?: MinMaxInput<Schema, Model>;
|
|
467
|
+
_avg?: SumAvgInput<Schema, Model, true>;
|
|
468
|
+
_sum?: SumAvgInput<Schema, Model, true>;
|
|
413
469
|
});
|
|
414
470
|
type GroupByResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args extends GroupByArgs<Schema, Model>> = Array<{
|
|
415
|
-
[Key in NonRelationFields<Schema, Model> as Key extends ValueOfPotentialTuple<Args['by']> ? Key : never]:
|
|
471
|
+
[Key in NonRelationFields<Schema, Model> as Key extends ValueOfPotentialTuple<Args['by']> ? Key : never]: MapModelFieldType<Schema, Model, Key>;
|
|
416
472
|
} & (Args extends {
|
|
417
473
|
_count: infer Count;
|
|
418
474
|
} ? {
|
|
@@ -446,7 +502,7 @@ type NestedUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>
|
|
|
446
502
|
data: UpdateInput<Schema, RelationFieldType<Schema, Model, Field>, OppositeRelationAndFK<Schema, Model, Field>>;
|
|
447
503
|
}, UpdateInput<Schema, RelationFieldType<Schema, Model, Field>, OppositeRelationAndFK<Schema, Model, Field>>>;
|
|
448
504
|
type NestedUpsertInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = OrArray<{
|
|
449
|
-
where: WhereUniqueInput<Schema, Model
|
|
505
|
+
where: WhereUniqueInput<Schema, RelationFieldType<Schema, Model, Field>>;
|
|
450
506
|
create: CreateInput<Schema, RelationFieldType<Schema, Model, Field>, OppositeRelationAndFK<Schema, Model, Field>>;
|
|
451
507
|
update: UpdateInput<Schema, RelationFieldType<Schema, Model, Field>, OppositeRelationAndFK<Schema, Model, Field>>;
|
|
452
508
|
}, FieldIsArray<Schema, Model, Field>>;
|
|
@@ -454,10 +510,15 @@ type NestedUpdateManyInput<Schema extends SchemaDef, Model extends GetModels<Sch
|
|
|
454
510
|
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>>;
|
|
455
511
|
type NestedDeleteManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = OrArray<WhereInput<Schema, RelationFieldType<Schema, Model, Field>, true>>;
|
|
456
512
|
type NonOwnedRelationFields<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
457
|
-
[Key in RelationFields<Schema, Model> as
|
|
513
|
+
[Key in RelationFields<Schema, Model> as GetModelField<Schema, Model, Key>['relation'] extends {
|
|
458
514
|
references: unknown[];
|
|
459
|
-
} ? never : Key]:
|
|
515
|
+
} ? never : Key]: true;
|
|
460
516
|
};
|
|
517
|
+
type HasToManyRelations<Schema extends SchemaDef, Model extends GetModels<Schema>> = keyof {
|
|
518
|
+
[Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: true;
|
|
519
|
+
} extends never ? false : true;
|
|
520
|
+
type ProviderSupportsCaseSensitivity<Schema extends SchemaDef> = Schema['provider']['type'] extends 'postgresql' ? true : false;
|
|
521
|
+
type ProviderSupportsDistinct<Schema extends SchemaDef> = Schema['provider']['type'] extends 'postgresql' ? true : false;
|
|
461
522
|
|
|
462
523
|
type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Record<string, unknown> : Schema['authType'] extends GetModels<Schema> ? Partial<ModelResult<Schema, Schema['authType']>> : never;
|
|
463
524
|
|
|
@@ -465,22 +526,27 @@ type AuthType<Schema extends SchemaDef> = string extends GetModels<Schema> ? Rec
|
|
|
465
526
|
* Client API methods that are not supported in transactions.
|
|
466
527
|
*/
|
|
467
528
|
declare const TRANSACTION_UNSUPPORTED_METHODS: readonly ["$transaction", "$disconnect", "$use"];
|
|
529
|
+
/**
|
|
530
|
+
* Logical combinators used in filters.
|
|
531
|
+
*/
|
|
532
|
+
declare const LOGICAL_COMBINATORS: readonly ["AND", "OR", "NOT"];
|
|
468
533
|
|
|
469
534
|
declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
470
535
|
protected readonly schema: Schema;
|
|
471
536
|
protected readonly options: ClientOptions<Schema>;
|
|
472
537
|
constructor(schema: Schema, options: ClientOptions<Schema>);
|
|
473
|
-
abstract get provider(): DataSourceProviderType;
|
|
474
538
|
transformPrimitive(value: unknown, _type: BuiltinType, _forArrayField: boolean): unknown;
|
|
475
|
-
|
|
476
|
-
|
|
539
|
+
buildSelectModel(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string): SelectQueryBuilder<any, any, {}>;
|
|
540
|
+
buildFilterSortTake(model: GetModels<Schema>, args: FindArgs<Schema, GetModels<Schema>, true>, query: SelectQueryBuilder<any, any, {}>, modelAlias: string): SelectQueryBuilder<any, any, {}>;
|
|
477
541
|
buildFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, where: boolean | object | undefined): Expression<SqlBool>;
|
|
478
|
-
|
|
542
|
+
private buildCursorFilter;
|
|
543
|
+
private isLogicalCombinator;
|
|
544
|
+
protected buildCompositeFilter(eb: ExpressionBuilder<any, any>, model: string, modelAlias: string, key: (typeof LOGICAL_COMBINATORS)[number], payload: any): Expression<SqlBool>;
|
|
479
545
|
private buildRelationFilter;
|
|
480
546
|
private buildToOneRelationFilter;
|
|
481
547
|
private buildToManyRelationFilter;
|
|
482
548
|
private buildArrayFilter;
|
|
483
|
-
buildPrimitiveFilter(eb: ExpressionBuilder<any, any>,
|
|
549
|
+
buildPrimitiveFilter(eb: ExpressionBuilder<any, any>, fieldRef: Expression<any>, fieldDef: FieldDef, payload: any): Expression<SqlBool>;
|
|
484
550
|
private buildLiteralFilter;
|
|
485
551
|
private buildStandardFilter;
|
|
486
552
|
private buildStringFilter;
|
|
@@ -491,6 +557,11 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
491
557
|
private buildBytesFilter;
|
|
492
558
|
private buildEnumFilter;
|
|
493
559
|
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>;
|
|
560
|
+
buildSelectAllFields(model: string, query: SelectQueryBuilder<any, any, any>, omit: Record<string, boolean | undefined> | undefined, modelAlias: string): SelectQueryBuilder<any, any, any>;
|
|
561
|
+
protected buildModelSelect(eb: ExpressionBuilder<any, any>, model: GetModels<Schema>, subQueryAlias: string, payload: true | FindArgs<Schema, GetModels<Schema>, true>, selectAllFields: boolean): SelectQueryBuilder<any, any, {}>;
|
|
562
|
+
buildSelectField(query: SelectQueryBuilder<any, any, any>, model: string, modelAlias: string, field: string): SelectQueryBuilder<any, any, any>;
|
|
563
|
+
buildDelegateJoin(thisModel: string, thisModelAlias: string, otherModelAlias: string, query: SelectQueryBuilder<any, any, any>): SelectQueryBuilder<any, any, any>;
|
|
564
|
+
buildCountJson(model: string, eb: ExpressionBuilder<any, any>, parentAlias: string, payload: any): ExpressionWrapper<any, any, unknown>;
|
|
494
565
|
private negateSort;
|
|
495
566
|
true(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
|
|
496
567
|
false(eb: ExpressionBuilder<any, any>): Expression<SqlBool>;
|
|
@@ -499,6 +570,17 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
499
570
|
protected and(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): Expression<SqlBool>;
|
|
500
571
|
protected or(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): Expression<SqlBool>;
|
|
501
572
|
protected not(eb: ExpressionBuilder<any, any>, ...args: Expression<SqlBool>[]): ExpressionWrapper<any, any, SqlBool>;
|
|
573
|
+
fieldRef(model: string, field: string, eb: ExpressionBuilder<any, any>, modelAlias?: string, inlineComputedField?: boolean): ExpressionWrapper<any, any, unknown>;
|
|
574
|
+
protected canJoinWithoutNestedSelect(modelDef: ModelDef, payload: boolean | FindArgs<Schema, GetModels<Schema>, true>): boolean;
|
|
575
|
+
abstract get provider(): DataSourceProviderType;
|
|
576
|
+
/**
|
|
577
|
+
* Builds selection for a relation field.
|
|
578
|
+
*/
|
|
579
|
+
abstract buildRelationSelection(query: SelectQueryBuilder<any, any, any>, model: string, relationField: string, parentAlias: string, payload: true | FindArgs<Schema, GetModels<Schema>, true>): SelectQueryBuilder<any, any, any>;
|
|
580
|
+
/**
|
|
581
|
+
* Builds skip and take clauses.
|
|
582
|
+
*/
|
|
583
|
+
abstract buildSkipTake(query: SelectQueryBuilder<any, any, any>, skip: number | undefined, take: number | undefined): SelectQueryBuilder<any, any, any>;
|
|
502
584
|
/**
|
|
503
585
|
* Builds an Kysely expression that returns a JSON object for the given key-value pairs.
|
|
504
586
|
*/
|
|
@@ -523,146 +605,157 @@ declare abstract class BaseCrudDialect<Schema extends SchemaDef> {
|
|
|
523
605
|
* Whether the dialect supports DISTINCT ON.
|
|
524
606
|
*/
|
|
525
607
|
abstract get supportsDistinctOn(): boolean;
|
|
608
|
+
/**
|
|
609
|
+
* Whether the dialect support inserting with `DEFAULT` as field value.
|
|
610
|
+
*/
|
|
611
|
+
abstract get supportInsertWithDefault(): boolean;
|
|
526
612
|
}
|
|
527
613
|
|
|
528
|
-
type
|
|
614
|
+
type CoreCrudOperation = 'findMany' | 'findUnique' | 'findFirst' | 'create' | 'createMany' | 'createManyAndReturn' | 'update' | 'updateMany' | 'updateManyAndReturn' | 'upsert' | 'delete' | 'deleteMany' | 'count' | 'aggregate' | 'groupBy';
|
|
615
|
+
type AllCrudOperation = CoreCrudOperation | 'findUniqueOrThrow' | 'findFirstOrThrow';
|
|
529
616
|
|
|
530
617
|
/**
|
|
531
|
-
*
|
|
618
|
+
* ZenStack runtime plugin.
|
|
532
619
|
*/
|
|
533
|
-
|
|
620
|
+
interface RuntimePlugin<Schema extends SchemaDef = SchemaDef> {
|
|
534
621
|
/**
|
|
535
|
-
*
|
|
622
|
+
* Plugin ID.
|
|
536
623
|
*/
|
|
537
|
-
|
|
624
|
+
id: string;
|
|
538
625
|
/**
|
|
539
|
-
*
|
|
626
|
+
* Plugin display name.
|
|
540
627
|
*/
|
|
541
|
-
|
|
628
|
+
name?: string;
|
|
542
629
|
/**
|
|
543
|
-
*
|
|
630
|
+
* Plugin description.
|
|
544
631
|
*/
|
|
545
|
-
|
|
546
|
-
};
|
|
547
|
-
type MutationHooksArgs<Schema extends SchemaDef> = {
|
|
632
|
+
description?: string;
|
|
548
633
|
/**
|
|
549
|
-
*
|
|
634
|
+
* Intercepts an ORM query.
|
|
550
635
|
*/
|
|
551
|
-
|
|
636
|
+
onQuery?: OnQueryCallback<Schema>;
|
|
552
637
|
/**
|
|
553
|
-
*
|
|
638
|
+
* Intercepts an entity mutation.
|
|
554
639
|
*/
|
|
555
|
-
|
|
640
|
+
onEntityMutation?: EntityMutationHooksDef<Schema>;
|
|
556
641
|
/**
|
|
557
|
-
*
|
|
642
|
+
* Intercepts a Kysely query.
|
|
558
643
|
*/
|
|
559
|
-
|
|
560
|
-
}
|
|
561
|
-
type PluginBeforeEntityMutationArgs<Schema extends SchemaDef> = MutationHooksArgs<Schema> & {
|
|
562
|
-
entities?: Record<string, unknown>[];
|
|
563
|
-
};
|
|
564
|
-
type PluginAfterEntityMutationArgs<Schema extends SchemaDef> = MutationHooksArgs<Schema> & {
|
|
565
|
-
beforeMutationEntities?: Record<string, unknown>[];
|
|
566
|
-
afterMutationEntities?: Record<string, unknown>[];
|
|
567
|
-
};
|
|
568
|
-
type OnKyselyQueryArgs<Schema extends SchemaDef> = {
|
|
569
|
-
kysely: ToKysely<Schema>;
|
|
570
|
-
schema: SchemaDef;
|
|
571
|
-
client: ClientContract<Schema>;
|
|
572
|
-
query: RootOperationNode;
|
|
573
|
-
proceed: ProceedKyselyQueryFunction;
|
|
574
|
-
};
|
|
575
|
-
type ProceedKyselyQueryFunction = (query: RootOperationNode) => Promise<QueryResult<any>>;
|
|
644
|
+
onKyselyQuery?: OnKyselyQueryCallback<Schema>;
|
|
645
|
+
}
|
|
576
646
|
/**
|
|
577
|
-
* ZenStack runtime plugin.
|
|
647
|
+
* Defines a ZenStack runtime plugin.
|
|
578
648
|
*/
|
|
579
|
-
|
|
649
|
+
declare function definePlugin<Schema extends SchemaDef>(plugin: RuntimePlugin<Schema>): RuntimePlugin<Schema>;
|
|
650
|
+
|
|
651
|
+
type OnQueryCallback<Schema extends SchemaDef> = (ctx: OnQueryHookContext<Schema>) => Promise<unknown>;
|
|
652
|
+
type OnQueryHookContext<Schema extends SchemaDef> = {
|
|
580
653
|
/**
|
|
581
|
-
*
|
|
654
|
+
* The model that is being queried.
|
|
582
655
|
*/
|
|
583
|
-
|
|
656
|
+
model: GetModels<Schema>;
|
|
584
657
|
/**
|
|
585
|
-
*
|
|
658
|
+
* The operation that is being performed.
|
|
586
659
|
*/
|
|
587
|
-
|
|
660
|
+
operation: AllCrudOperation;
|
|
588
661
|
/**
|
|
589
|
-
*
|
|
662
|
+
* The query arguments.
|
|
590
663
|
*/
|
|
591
|
-
|
|
664
|
+
args: unknown;
|
|
592
665
|
/**
|
|
593
|
-
*
|
|
666
|
+
* The function to proceed with the original query.
|
|
667
|
+
* It takes the same arguments as the operation method.
|
|
668
|
+
*
|
|
669
|
+
* @param args The query arguments.
|
|
594
670
|
*/
|
|
595
|
-
|
|
671
|
+
proceed: (args: unknown) => Promise<unknown>;
|
|
596
672
|
/**
|
|
597
|
-
*
|
|
673
|
+
* The ZenStack client that is performing the operation.
|
|
598
674
|
*/
|
|
599
|
-
|
|
675
|
+
client: ClientContract<Schema>;
|
|
676
|
+
};
|
|
677
|
+
type EntityMutationHooksDef<Schema extends SchemaDef> = {
|
|
600
678
|
/**
|
|
601
|
-
*
|
|
602
|
-
* what data should be loaded before and after the mutation.
|
|
679
|
+
* Called before entities are mutated.
|
|
603
680
|
*/
|
|
604
|
-
|
|
681
|
+
beforeEntityMutation?: BeforeEntityMutationCallback<Schema>;
|
|
605
682
|
/**
|
|
606
|
-
* Called
|
|
607
|
-
* @param args.entity Only available if `loadBeforeMutationEntity` is set to true in the
|
|
608
|
-
* return value of {@link RuntimePlugin.mutationInterceptionFilter}.
|
|
683
|
+
* Called after entities are mutated.
|
|
609
684
|
*/
|
|
610
|
-
|
|
685
|
+
afterEntityMutation?: AfterEntityMutationCallback<Schema>;
|
|
611
686
|
/**
|
|
612
|
-
*
|
|
613
|
-
*
|
|
614
|
-
*
|
|
615
|
-
*
|
|
616
|
-
*
|
|
687
|
+
* Whether to run after-mutation hooks within the transaction that performs the mutation.
|
|
688
|
+
*
|
|
689
|
+
* If set to `true`, if the mutation already runs inside a transaction, the callbacks are
|
|
690
|
+
* executed immediately after the mutation within the transaction boundary. If the mutation
|
|
691
|
+
* is not running inside a transaction, a new transaction is created to run both the mutation
|
|
692
|
+
* and the callbacks.
|
|
693
|
+
*
|
|
694
|
+
* If set to `false`, the callbacks are executed after the mutation transaction is committed.
|
|
695
|
+
*
|
|
696
|
+
* Defaults to `false`.
|
|
617
697
|
*/
|
|
618
|
-
|
|
619
|
-
}
|
|
620
|
-
type OnQueryHooks<Schema extends SchemaDef = SchemaDef> = {
|
|
621
|
-
[Model in GetModels<Schema> as Uncapitalize<Model>]?: OnQueryOperationHooks<Schema, Model>;
|
|
622
|
-
} & {
|
|
623
|
-
$allModels?: OnQueryOperationHooks<Schema, GetModels<Schema>>;
|
|
624
|
-
};
|
|
625
|
-
type OnQueryOperationHooks<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
626
|
-
[Operation in keyof ModelOperations<Schema, Model>]?: (ctx: OnQueryHookContext<Schema, Model, Operation>) => Promise<Awaited<ReturnType<ModelOperations<Schema, Model>[Operation]>>>;
|
|
627
|
-
} & {
|
|
628
|
-
$allOperations?: (ctx: {
|
|
629
|
-
model: Model;
|
|
630
|
-
operation: CrudOperation;
|
|
631
|
-
args: unknown;
|
|
632
|
-
query: (args: unknown) => Promise<unknown>;
|
|
633
|
-
}) => MaybePromise<unknown>;
|
|
698
|
+
runAfterMutationWithinTransaction?: boolean;
|
|
634
699
|
};
|
|
635
|
-
type
|
|
700
|
+
type MutationHooksArgs<Schema extends SchemaDef> = {
|
|
636
701
|
/**
|
|
637
|
-
* The model that is being
|
|
702
|
+
* The model that is being mutated.
|
|
703
|
+
*/
|
|
704
|
+
model: GetModels<Schema>;
|
|
705
|
+
/**
|
|
706
|
+
* The mutation action that is being performed.
|
|
638
707
|
*/
|
|
639
|
-
|
|
708
|
+
action: 'create' | 'update' | 'delete';
|
|
640
709
|
/**
|
|
641
|
-
* The
|
|
710
|
+
* The mutation data. Only available for create and update actions.
|
|
642
711
|
*/
|
|
643
|
-
|
|
712
|
+
queryNode: OperationNode;
|
|
644
713
|
/**
|
|
645
|
-
*
|
|
714
|
+
* A query ID that uniquely identifies the mutation operation. You can use it to correlate
|
|
715
|
+
* data between the before and after mutation hooks.
|
|
646
716
|
*/
|
|
647
|
-
|
|
717
|
+
queryId: string;
|
|
718
|
+
};
|
|
719
|
+
type BeforeEntityMutationCallback<Schema extends SchemaDef> = (args: PluginBeforeEntityMutationArgs<Schema>) => MaybePromise<void>;
|
|
720
|
+
type AfterEntityMutationCallback<Schema extends SchemaDef> = (args: PluginAfterEntityMutationArgs<Schema>) => MaybePromise<void>;
|
|
721
|
+
type PluginBeforeEntityMutationArgs<Schema extends SchemaDef> = MutationHooksArgs<Schema> & {
|
|
648
722
|
/**
|
|
649
|
-
*
|
|
650
|
-
*
|
|
723
|
+
* Loads the entities that are about to be mutated. The db operation that loads the entities is executed
|
|
724
|
+
* within the same transaction context as the mutation.
|
|
725
|
+
*/
|
|
726
|
+
loadBeforeMutationEntities(): Promise<Record<string, unknown>[] | undefined>;
|
|
727
|
+
/**
|
|
728
|
+
* The ZenStack client you can use to perform additional operations. The database operations initiated
|
|
729
|
+
* from this client are executed within the same transaction as the mutation if the mutation is running
|
|
730
|
+
* inside a transaction.
|
|
651
731
|
*
|
|
652
|
-
*
|
|
732
|
+
* Mutations initiated from this client will NOT trigger entity mutation hooks to avoid infinite loops.
|
|
653
733
|
*/
|
|
654
|
-
|
|
734
|
+
client: ClientContract<Schema>;
|
|
735
|
+
};
|
|
736
|
+
type PluginAfterEntityMutationArgs<Schema extends SchemaDef> = MutationHooksArgs<Schema> & {
|
|
655
737
|
/**
|
|
656
|
-
*
|
|
738
|
+
* Loads the entities that have been mutated.
|
|
739
|
+
*/
|
|
740
|
+
loadAfterMutationEntities(): Promise<Record<string, unknown>[] | undefined>;
|
|
741
|
+
/**
|
|
742
|
+
* The ZenStack client you can use to perform additional operations.
|
|
743
|
+
* See {@link EntityMutationHooksDef.runAfterMutationWithinTransaction} for detailed transaction behavior.
|
|
744
|
+
*
|
|
745
|
+
* Mutations initiated from this client will NOT trigger entity mutation hooks to avoid infinite loops.
|
|
657
746
|
*/
|
|
658
747
|
client: ClientContract<Schema>;
|
|
659
748
|
};
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
749
|
+
type OnKyselyQueryArgs<Schema extends SchemaDef> = {
|
|
750
|
+
kysely: ToKysely<Schema>;
|
|
751
|
+
schema: SchemaDef;
|
|
752
|
+
client: ClientContract<Schema>;
|
|
753
|
+
query: RootOperationNode;
|
|
754
|
+
proceed: ProceedKyselyQueryFunction;
|
|
755
|
+
};
|
|
756
|
+
type ProceedKyselyQueryFunction = (query: RootOperationNode) => Promise<QueryResult<any>>;
|
|
757
|
+
type OnKyselyQueryCallback<Schema extends SchemaDef> = (args: OnKyselyQueryArgs<Schema>) => Promise<QueryResult<UnknownRow>>;
|
|
664
758
|
|
|
665
|
-
type DialectConfig<Provider extends DataSourceProvider> = Provider['type'] extends 'sqlite' ? Optional<SqliteDialectConfig, 'database'> : Provider['type'] extends 'postgresql' ? Optional<PostgresDialectConfig, 'pool'> : never;
|
|
666
759
|
type ZModelFunctionContext<Schema extends SchemaDef> = {
|
|
667
760
|
dialect: BaseCrudDialect<Schema>;
|
|
668
761
|
model: GetModels<Schema>;
|
|
@@ -674,9 +767,9 @@ type ZModelFunction<Schema extends SchemaDef> = (eb: ExpressionBuilder<ToKyselyS
|
|
|
674
767
|
*/
|
|
675
768
|
type ClientOptions<Schema extends SchemaDef> = {
|
|
676
769
|
/**
|
|
677
|
-
*
|
|
770
|
+
* Kysely dialect.
|
|
678
771
|
*/
|
|
679
|
-
|
|
772
|
+
dialect: Dialect;
|
|
680
773
|
/**
|
|
681
774
|
* Custom function definitions.
|
|
682
775
|
*/
|
|
@@ -689,10 +782,6 @@ type ClientOptions<Schema extends SchemaDef> = {
|
|
|
689
782
|
* Logging configuration.
|
|
690
783
|
*/
|
|
691
784
|
log?: KyselyConfig['log'];
|
|
692
|
-
/**
|
|
693
|
-
* Debug mode.
|
|
694
|
-
*/
|
|
695
|
-
debug?: boolean;
|
|
696
785
|
} & (HasComputedFields<Schema> extends true ? {
|
|
697
786
|
/**
|
|
698
787
|
* Computed field definitions.
|
|
@@ -754,7 +843,7 @@ type ClientContract<Schema extends SchemaDef> = {
|
|
|
754
843
|
* Executes a prepared raw query and returns the number of affected rows.
|
|
755
844
|
* @example
|
|
756
845
|
* ```
|
|
757
|
-
* const result = await
|
|
846
|
+
* const result = await db.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
|
|
758
847
|
* ```
|
|
759
848
|
*/
|
|
760
849
|
$executeRaw(query: TemplateStringsArray, ...values: any[]): ZenStackPromise<Schema, number>;
|
|
@@ -763,7 +852,7 @@ type ClientContract<Schema extends SchemaDef> = {
|
|
|
763
852
|
* This method is susceptible to SQL injections.
|
|
764
853
|
* @example
|
|
765
854
|
* ```
|
|
766
|
-
* const result = await
|
|
855
|
+
* const result = await db.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
|
|
767
856
|
* ```
|
|
768
857
|
*/
|
|
769
858
|
$executeRawUnsafe(query: string, ...values: any[]): ZenStackPromise<Schema, number>;
|
|
@@ -771,7 +860,7 @@ type ClientContract<Schema extends SchemaDef> = {
|
|
|
771
860
|
* Performs a prepared raw query and returns the `SELECT` data.
|
|
772
861
|
* @example
|
|
773
862
|
* ```
|
|
774
|
-
* const result = await
|
|
863
|
+
* const result = await db.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
|
|
775
864
|
* ```
|
|
776
865
|
*/
|
|
777
866
|
$queryRaw<T = unknown>(query: TemplateStringsArray, ...values: any[]): ZenStackPromise<Schema, T>;
|
|
@@ -780,7 +869,7 @@ type ClientContract<Schema extends SchemaDef> = {
|
|
|
780
869
|
* This method is susceptible to SQL injections.
|
|
781
870
|
* @example
|
|
782
871
|
* ```
|
|
783
|
-
* const result = await
|
|
872
|
+
* const result = await db.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
|
|
784
873
|
* ```
|
|
785
874
|
*/
|
|
786
875
|
$queryRawUnsafe<T = unknown>(query: string, ...values: any[]): ZenStackPromise<Schema, T>;
|
|
@@ -869,7 +958,7 @@ interface ClientConstructor {
|
|
|
869
958
|
* CRUD operations.
|
|
870
959
|
*/
|
|
871
960
|
type CRUD = 'create' | 'read' | 'update' | 'delete';
|
|
872
|
-
|
|
961
|
+
type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
|
|
873
962
|
/**
|
|
874
963
|
* Returns a list of entities.
|
|
875
964
|
* @param args - query args
|
|
@@ -878,17 +967,17 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
878
967
|
* @example
|
|
879
968
|
* ```ts
|
|
880
969
|
* // find all users and return all scalar fields
|
|
881
|
-
* await
|
|
970
|
+
* await db.user.findMany();
|
|
882
971
|
*
|
|
883
972
|
* // find all users with name 'Alex'
|
|
884
|
-
* await
|
|
973
|
+
* await db.user.findMany({
|
|
885
974
|
* where: {
|
|
886
975
|
* name: 'Alex'
|
|
887
976
|
* }
|
|
888
977
|
* });
|
|
889
978
|
*
|
|
890
979
|
* // select fields
|
|
891
|
-
* await
|
|
980
|
+
* await db.user.findMany({
|
|
892
981
|
* select: {
|
|
893
982
|
* name: true,
|
|
894
983
|
* email: true,
|
|
@@ -896,21 +985,21 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
896
985
|
* }); // result: `Array<{ name: string, email: string }>`
|
|
897
986
|
*
|
|
898
987
|
* // omit fields
|
|
899
|
-
* await
|
|
988
|
+
* await db.user.findMany({
|
|
900
989
|
* omit: {
|
|
901
990
|
* name: true,
|
|
902
991
|
* }
|
|
903
992
|
* }); // result: `Array<{ id: number; email: string; ... }>`
|
|
904
993
|
*
|
|
905
994
|
* // include relations (and all scalar fields)
|
|
906
|
-
* await
|
|
995
|
+
* await db.user.findMany({
|
|
907
996
|
* include: {
|
|
908
997
|
* posts: true,
|
|
909
998
|
* }
|
|
910
999
|
* }); // result: `Array<{ ...; posts: Post[] }>`
|
|
911
1000
|
*
|
|
912
1001
|
* // include relations with filter
|
|
913
|
-
* await
|
|
1002
|
+
* await db.user.findMany({
|
|
914
1003
|
* include: {
|
|
915
1004
|
* posts: {
|
|
916
1005
|
* where: {
|
|
@@ -921,14 +1010,14 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
921
1010
|
* });
|
|
922
1011
|
*
|
|
923
1012
|
* // pagination and sorting
|
|
924
|
-
* await
|
|
1013
|
+
* await db.user.findMany({
|
|
925
1014
|
* skip: 10,
|
|
926
1015
|
* take: 10,
|
|
927
1016
|
* orderBy: [{ name: 'asc' }, { email: 'desc' }],
|
|
928
1017
|
* });
|
|
929
1018
|
*
|
|
930
1019
|
* // pagination with cursor (https://www.prisma.io/docs/orm/prisma-client/queries/pagination#cursor-based-pagination)
|
|
931
|
-
* await
|
|
1020
|
+
* await db.user.findMany({
|
|
932
1021
|
* cursor: { id: 10 },
|
|
933
1022
|
* skip: 1,
|
|
934
1023
|
* take: 10,
|
|
@@ -936,50 +1025,50 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
936
1025
|
* });
|
|
937
1026
|
*
|
|
938
1027
|
* // distinct
|
|
939
|
-
* await
|
|
1028
|
+
* await db.user.findMany({
|
|
940
1029
|
* distinct: ['name']
|
|
941
1030
|
* });
|
|
942
1031
|
*
|
|
943
1032
|
* // count all relations
|
|
944
|
-
* await
|
|
1033
|
+
* await db.user.findMany({
|
|
945
1034
|
* _count: true,
|
|
946
1035
|
* }); // result: `{ _count: { posts: number; ... } }`
|
|
947
1036
|
*
|
|
948
1037
|
* // count selected relations
|
|
949
|
-
* await
|
|
1038
|
+
* await db.user.findMany({
|
|
950
1039
|
* _count: { select: { posts: true } },
|
|
951
1040
|
* }); // result: `{ _count: { posts: number } }`
|
|
952
1041
|
* ```
|
|
953
1042
|
*/
|
|
954
|
-
findMany<T extends FindArgs<Schema, Model, true>>(args?: SelectSubset<T, FindArgs<Schema, Model, true>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1043
|
+
findMany<T extends FindArgs<Schema, Model, true>>(args?: SelectSubset<T, FindArgs<Schema, Model, true>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>[]>;
|
|
955
1044
|
/**
|
|
956
1045
|
* Returns a uniquely identified entity.
|
|
957
1046
|
* @param args - query args
|
|
958
1047
|
* @returns a single entity or null if not found
|
|
959
1048
|
* @see {@link findMany}
|
|
960
1049
|
*/
|
|
961
|
-
findUnique<T extends FindUniqueArgs<Schema, Model>>(args
|
|
1050
|
+
findUnique<T extends FindUniqueArgs<Schema, Model>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>> | null>;
|
|
962
1051
|
/**
|
|
963
1052
|
* Returns a uniquely identified entity or throws `NotFoundError` if not found.
|
|
964
1053
|
* @param args - query args
|
|
965
1054
|
* @returns a single entity
|
|
966
1055
|
* @see {@link findMany}
|
|
967
1056
|
*/
|
|
968
|
-
findUniqueOrThrow<T extends FindUniqueArgs<Schema, Model>>(args
|
|
1057
|
+
findUniqueOrThrow<T extends FindUniqueArgs<Schema, Model>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>>;
|
|
969
1058
|
/**
|
|
970
1059
|
* Returns the first entity.
|
|
971
1060
|
* @param args - query args
|
|
972
1061
|
* @returns a single entity or null if not found
|
|
973
1062
|
* @see {@link findMany}
|
|
974
1063
|
*/
|
|
975
|
-
findFirst<T extends FindArgs<Schema, Model, true>>(args?: SelectSubset<T, FindArgs<Schema, Model, true>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1064
|
+
findFirst<T extends FindArgs<Schema, Model, true>>(args?: SelectSubset<T, FindArgs<Schema, Model, true>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>> | null>;
|
|
976
1065
|
/**
|
|
977
1066
|
* Returns the first entity or throws `NotFoundError` if not found.
|
|
978
1067
|
* @param args - query args
|
|
979
1068
|
* @returns a single entity
|
|
980
1069
|
* @see {@link findMany}
|
|
981
1070
|
*/
|
|
982
|
-
findFirstOrThrow<T extends FindArgs<Schema, Model, true>>(args?: SelectSubset<T, FindArgs<Schema, Model, true>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1071
|
+
findFirstOrThrow<T extends FindArgs<Schema, Model, true>>(args?: SelectSubset<T, FindArgs<Schema, Model, true>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>>;
|
|
983
1072
|
/**
|
|
984
1073
|
* Creates a new entity.
|
|
985
1074
|
* @param args - create args
|
|
@@ -988,12 +1077,12 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
988
1077
|
* @example
|
|
989
1078
|
* ```ts
|
|
990
1079
|
* // simple create
|
|
991
|
-
* await
|
|
1080
|
+
* await db.user.create({
|
|
992
1081
|
* data: { name: 'Alex', email: 'alex@zenstack.dev' }
|
|
993
1082
|
* });
|
|
994
1083
|
*
|
|
995
1084
|
* // nested create with relation
|
|
996
|
-
* await
|
|
1085
|
+
* await db.user.create({
|
|
997
1086
|
* data: {
|
|
998
1087
|
* email: 'alex@zenstack.dev',
|
|
999
1088
|
* posts: { create: { title: 'Hello World' } }
|
|
@@ -1002,7 +1091,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1002
1091
|
*
|
|
1003
1092
|
* // you can use `select`, `omit`, and `include` to control
|
|
1004
1093
|
* // the fields returned by the query, as with `findMany`
|
|
1005
|
-
* await
|
|
1094
|
+
* await db.user.create({
|
|
1006
1095
|
* data: {
|
|
1007
1096
|
* email: 'alex@zenstack.dev',
|
|
1008
1097
|
* posts: { create: { title: 'Hello World' } }
|
|
@@ -1011,7 +1100,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1011
1100
|
* }); // result: `{ id: number; posts: Post[] }`
|
|
1012
1101
|
*
|
|
1013
1102
|
* // connect relations
|
|
1014
|
-
* await
|
|
1103
|
+
* await db.user.create({
|
|
1015
1104
|
* data: {
|
|
1016
1105
|
* email: 'alex@zenstack.dev',
|
|
1017
1106
|
* posts: { connect: { id: 1 } }
|
|
@@ -1019,7 +1108,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1019
1108
|
* });
|
|
1020
1109
|
*
|
|
1021
1110
|
* // connect relations, and create if not found
|
|
1022
|
-
* await
|
|
1111
|
+
* await db.user.create({
|
|
1023
1112
|
* data: {
|
|
1024
1113
|
* email: 'alex@zenstack.dev',
|
|
1025
1114
|
* posts: {
|
|
@@ -1032,7 +1121,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1032
1121
|
* });
|
|
1033
1122
|
* ```
|
|
1034
1123
|
*/
|
|
1035
|
-
create<T extends CreateArgs<Schema, Model>>(args: SelectSubset<T, CreateArgs<Schema, Model>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1124
|
+
create<T extends CreateArgs<Schema, Model>>(args: SelectSubset<T, CreateArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>>;
|
|
1036
1125
|
/**
|
|
1037
1126
|
* Creates multiple entities. Only scalar fields are allowed.
|
|
1038
1127
|
* @param args - create args
|
|
@@ -1041,7 +1130,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1041
1130
|
* @example
|
|
1042
1131
|
* ```ts
|
|
1043
1132
|
* // create multiple entities
|
|
1044
|
-
* await
|
|
1133
|
+
* await db.user.createMany({
|
|
1045
1134
|
* data: [
|
|
1046
1135
|
* { name: 'Alex', email: 'alex@zenstack.dev' },
|
|
1047
1136
|
* { name: 'John', email: 'john@zenstack.dev' }
|
|
@@ -1049,7 +1138,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1049
1138
|
* });
|
|
1050
1139
|
*
|
|
1051
1140
|
* // skip items that cause unique constraint violation
|
|
1052
|
-
* await
|
|
1141
|
+
* await db.user.createMany({
|
|
1053
1142
|
* data: [
|
|
1054
1143
|
* { name: 'Alex', email: 'alex@zenstack.dev' },
|
|
1055
1144
|
* { name: 'John', email: 'john@zenstack.dev' }
|
|
@@ -1068,7 +1157,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1068
1157
|
* @example
|
|
1069
1158
|
* ```ts
|
|
1070
1159
|
* // create multiple entities and return selected fields
|
|
1071
|
-
* await
|
|
1160
|
+
* await db.user.createManyAndReturn({
|
|
1072
1161
|
* data: [
|
|
1073
1162
|
* { name: 'Alex', email: 'alex@zenstack.dev' },
|
|
1074
1163
|
* { name: 'John', email: 'john@zenstack.dev' }
|
|
@@ -1077,7 +1166,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1077
1166
|
* });
|
|
1078
1167
|
* ```
|
|
1079
1168
|
*/
|
|
1080
|
-
createManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model>>(args?: SelectSubset<T, CreateManyAndReturnArgs<Schema, Model>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1169
|
+
createManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model>>(args?: SelectSubset<T, CreateManyAndReturnArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>[]>;
|
|
1081
1170
|
/**
|
|
1082
1171
|
* Updates a uniquely identified entity.
|
|
1083
1172
|
* @param args - update args. See {@link findMany} for how to control
|
|
@@ -1087,19 +1176,19 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1087
1176
|
* @example
|
|
1088
1177
|
* ```ts
|
|
1089
1178
|
* // update fields
|
|
1090
|
-
* await
|
|
1179
|
+
* await db.user.update({
|
|
1091
1180
|
* where: { id: 1 },
|
|
1092
1181
|
* data: { name: 'Alex' }
|
|
1093
1182
|
* });
|
|
1094
1183
|
*
|
|
1095
1184
|
* // connect a relation
|
|
1096
|
-
* await
|
|
1185
|
+
* await db.user.update({
|
|
1097
1186
|
* where: { id: 1 },
|
|
1098
1187
|
* data: { posts: { connect: { id: 1 } } }
|
|
1099
1188
|
* });
|
|
1100
1189
|
*
|
|
1101
1190
|
* // connect relation, and create if not found
|
|
1102
|
-
* await
|
|
1191
|
+
* await db.user.update({
|
|
1103
1192
|
* where: { id: 1 },
|
|
1104
1193
|
* data: {
|
|
1105
1194
|
* posts: {
|
|
@@ -1112,7 +1201,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1112
1201
|
* });
|
|
1113
1202
|
*
|
|
1114
1203
|
* // create many related entities (only available for one-to-many relations)
|
|
1115
|
-
* await
|
|
1204
|
+
* await db.user.update({
|
|
1116
1205
|
* where: { id: 1 },
|
|
1117
1206
|
* data: {
|
|
1118
1207
|
* posts: {
|
|
@@ -1124,19 +1213,19 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1124
1213
|
* });
|
|
1125
1214
|
*
|
|
1126
1215
|
* // disconnect a one-to-many relation
|
|
1127
|
-
* await
|
|
1216
|
+
* await db.user.update({
|
|
1128
1217
|
* where: { id: 1 },
|
|
1129
1218
|
* data: { posts: { disconnect: { id: 1 } } }
|
|
1130
1219
|
* });
|
|
1131
1220
|
*
|
|
1132
1221
|
* // disconnect a one-to-one relation
|
|
1133
|
-
* await
|
|
1222
|
+
* await db.user.update({
|
|
1134
1223
|
* where: { id: 1 },
|
|
1135
1224
|
* data: { profile: { disconnect: true } }
|
|
1136
1225
|
* });
|
|
1137
1226
|
*
|
|
1138
1227
|
* // replace a relation (only available for one-to-many relations)
|
|
1139
|
-
* await
|
|
1228
|
+
* await db.user.update({
|
|
1140
1229
|
* where: { id: 1 },
|
|
1141
1230
|
* data: {
|
|
1142
1231
|
* posts: {
|
|
@@ -1146,7 +1235,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1146
1235
|
* });
|
|
1147
1236
|
*
|
|
1148
1237
|
* // update a relation
|
|
1149
|
-
* await
|
|
1238
|
+
* await db.user.update({
|
|
1150
1239
|
* where: { id: 1 },
|
|
1151
1240
|
* data: {
|
|
1152
1241
|
* posts: {
|
|
@@ -1156,7 +1245,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1156
1245
|
* });
|
|
1157
1246
|
*
|
|
1158
1247
|
* // upsert a relation
|
|
1159
|
-
* await
|
|
1248
|
+
* await db.user.update({
|
|
1160
1249
|
* where: { id: 1 },
|
|
1161
1250
|
* data: {
|
|
1162
1251
|
* posts: {
|
|
@@ -1170,7 +1259,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1170
1259
|
* });
|
|
1171
1260
|
*
|
|
1172
1261
|
* // update many related entities (only available for one-to-many relations)
|
|
1173
|
-
* await
|
|
1262
|
+
* await db.user.update({
|
|
1174
1263
|
* where: { id: 1 },
|
|
1175
1264
|
* data: {
|
|
1176
1265
|
* posts: {
|
|
@@ -1183,19 +1272,19 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1183
1272
|
* });
|
|
1184
1273
|
*
|
|
1185
1274
|
* // delete a one-to-many relation
|
|
1186
|
-
* await
|
|
1275
|
+
* await db.user.update({
|
|
1187
1276
|
* where: { id: 1 },
|
|
1188
1277
|
* data: { posts: { delete: { id: 1 } } }
|
|
1189
1278
|
* });
|
|
1190
1279
|
*
|
|
1191
1280
|
* // delete a one-to-one relation
|
|
1192
|
-
* await
|
|
1281
|
+
* await db.user.update({
|
|
1193
1282
|
* where: { id: 1 },
|
|
1194
1283
|
* data: { profile: { delete: true } }
|
|
1195
1284
|
* });
|
|
1196
1285
|
* ```
|
|
1197
1286
|
*/
|
|
1198
|
-
update<T extends UpdateArgs<Schema, Model>>(args: SelectSubset<T, UpdateArgs<Schema, Model>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1287
|
+
update<T extends UpdateArgs<Schema, Model>>(args: SelectSubset<T, UpdateArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>>;
|
|
1199
1288
|
/**
|
|
1200
1289
|
* Updates multiple entities.
|
|
1201
1290
|
* @param args - update args. Only scalar fields are allowed for data.
|
|
@@ -1204,13 +1293,13 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1204
1293
|
* @example
|
|
1205
1294
|
* ```ts
|
|
1206
1295
|
* // update many entities
|
|
1207
|
-
* await
|
|
1296
|
+
* await db.user.updateMany({
|
|
1208
1297
|
* where: { email: { endsWith: '@zenstack.dev' } },
|
|
1209
1298
|
* data: { role: 'ADMIN' }
|
|
1210
1299
|
* });
|
|
1211
1300
|
*
|
|
1212
1301
|
* // limit the number of updated entities
|
|
1213
|
-
* await
|
|
1302
|
+
* await db.user.updateMany({
|
|
1214
1303
|
* where: { email: { endsWith: '@zenstack.dev' } },
|
|
1215
1304
|
* data: { role: 'ADMIN' },
|
|
1216
1305
|
* limit: 10
|
|
@@ -1225,21 +1314,21 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1225
1314
|
* @example
|
|
1226
1315
|
* ```ts
|
|
1227
1316
|
* // update many entities and return selected fields
|
|
1228
|
-
* await
|
|
1317
|
+
* await db.user.updateManyAndReturn({
|
|
1229
1318
|
* where: { email: { endsWith: '@zenstack.dev' } },
|
|
1230
1319
|
* data: { role: 'ADMIN' },
|
|
1231
1320
|
* select: { id: true, email: true }
|
|
1232
1321
|
* }); // result: `Array<{ id: string; email: string }>`
|
|
1233
1322
|
*
|
|
1234
1323
|
* // limit the number of updated entities
|
|
1235
|
-
* await
|
|
1324
|
+
* await db.user.updateManyAndReturn({
|
|
1236
1325
|
* where: { email: { endsWith: '@zenstack.dev' } },
|
|
1237
1326
|
* data: { role: 'ADMIN' },
|
|
1238
1327
|
* limit: 10
|
|
1239
1328
|
* });
|
|
1240
1329
|
* ```
|
|
1241
1330
|
*/
|
|
1242
|
-
updateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model>>(args: Subset<T, UpdateManyAndReturnArgs<Schema, Model>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1331
|
+
updateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model>>(args: Subset<T, UpdateManyAndReturnArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>[]>;
|
|
1243
1332
|
/**
|
|
1244
1333
|
* Creates or updates an entity.
|
|
1245
1334
|
* @param args - upsert args
|
|
@@ -1248,7 +1337,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1248
1337
|
* @example
|
|
1249
1338
|
* ```ts
|
|
1250
1339
|
* // upsert an entity
|
|
1251
|
-
* await
|
|
1340
|
+
* await db.user.upsert({
|
|
1252
1341
|
* // `where` clause is used to find the entity
|
|
1253
1342
|
* where: { id: 1 },
|
|
1254
1343
|
* // `create` clause is used if the entity is not found
|
|
@@ -1260,7 +1349,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1260
1349
|
* });
|
|
1261
1350
|
* ```
|
|
1262
1351
|
*/
|
|
1263
|
-
upsert<T extends UpsertArgs<Schema, Model>>(args: SelectSubset<T, UpsertArgs<Schema, Model>>): ZenStackPromise<Schema, ModelResult<Schema, Model, T
|
|
1352
|
+
upsert<T extends UpsertArgs<Schema, Model>>(args: SelectSubset<T, UpsertArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>>;
|
|
1264
1353
|
/**
|
|
1265
1354
|
* Deletes a uniquely identifiable entity.
|
|
1266
1355
|
* @param args - delete args
|
|
@@ -1269,18 +1358,18 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1269
1358
|
* @example
|
|
1270
1359
|
* ```ts
|
|
1271
1360
|
* // delete an entity
|
|
1272
|
-
* await
|
|
1361
|
+
* await db.user.delete({
|
|
1273
1362
|
* where: { id: 1 }
|
|
1274
1363
|
* });
|
|
1275
1364
|
*
|
|
1276
1365
|
* // delete an entity and return selected fields
|
|
1277
|
-
* await
|
|
1366
|
+
* await db.user.delete({
|
|
1278
1367
|
* where: { id: 1 },
|
|
1279
1368
|
* select: { id: true, email: true }
|
|
1280
1369
|
* }); // result: `{ id: string; email: string }`
|
|
1281
1370
|
* ```
|
|
1282
1371
|
*/
|
|
1283
|
-
delete<T extends DeleteArgs<Schema, Model>>(args: SelectSubset<T, DeleteArgs<Schema, Model>>): ZenStackPromise<Schema, ModelResult<Schema, Model
|
|
1372
|
+
delete<T extends DeleteArgs<Schema, Model>>(args: SelectSubset<T, DeleteArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<ModelResult<Schema, Model, T>>>;
|
|
1284
1373
|
/**
|
|
1285
1374
|
* Deletes multiple entities.
|
|
1286
1375
|
* @param args - delete args
|
|
@@ -1289,12 +1378,12 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1289
1378
|
* @example
|
|
1290
1379
|
* ```ts
|
|
1291
1380
|
* // delete many entities
|
|
1292
|
-
* await
|
|
1381
|
+
* await db.user.deleteMany({
|
|
1293
1382
|
* where: { email: { endsWith: '@zenstack.dev' } }
|
|
1294
1383
|
* });
|
|
1295
1384
|
*
|
|
1296
1385
|
* // limit the number of deleted entities
|
|
1297
|
-
* await
|
|
1386
|
+
* await db.user.deleteMany({
|
|
1298
1387
|
* where: { email: { endsWith: '@zenstack.dev' } },
|
|
1299
1388
|
* limit: 10
|
|
1300
1389
|
* });
|
|
@@ -1309,17 +1398,17 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1309
1398
|
* @example
|
|
1310
1399
|
* ```ts
|
|
1311
1400
|
* // count all
|
|
1312
|
-
* await
|
|
1401
|
+
* await db.user.count();
|
|
1313
1402
|
*
|
|
1314
1403
|
* // count with a filter
|
|
1315
|
-
* await
|
|
1404
|
+
* await db.user.count({ where: { email: { endsWith: '@zenstack.dev' } } });
|
|
1316
1405
|
*
|
|
1317
1406
|
* // count rows and field values
|
|
1318
|
-
* await
|
|
1407
|
+
* await db.user.count({
|
|
1319
1408
|
* select: { _all: true, email: true }
|
|
1320
1409
|
* }); // result: `{ _all: number, email: number }`
|
|
1321
1410
|
*/
|
|
1322
|
-
count<T extends CountArgs<Schema, Model>>(args?: Subset<T, CountArgs<Schema, Model>>): ZenStackPromise<Schema, CountResult<Schema, Model, T
|
|
1411
|
+
count<T extends CountArgs<Schema, Model>>(args?: Subset<T, CountArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<CountResult<Schema, Model, T>>>;
|
|
1323
1412
|
/**
|
|
1324
1413
|
* Aggregates rows.
|
|
1325
1414
|
* @param args - aggregation args
|
|
@@ -1328,7 +1417,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1328
1417
|
* @example
|
|
1329
1418
|
* ```ts
|
|
1330
1419
|
* // aggregate rows
|
|
1331
|
-
* await
|
|
1420
|
+
* await db.profile.aggregate({
|
|
1332
1421
|
* where: { email: { endsWith: '@zenstack.dev' } },
|
|
1333
1422
|
* _count: true,
|
|
1334
1423
|
* _avg: { age: true },
|
|
@@ -1337,7 +1426,7 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1337
1426
|
* _max: { age: true }
|
|
1338
1427
|
* }); // result: `{ _count: number, _avg: { age: number }, ... }`
|
|
1339
1428
|
*/
|
|
1340
|
-
aggregate<T extends AggregateArgs<Schema, Model>>(args: Subset<T, AggregateArgs<Schema, Model>>): ZenStackPromise<Schema, AggregateResult<Schema, Model, T
|
|
1429
|
+
aggregate<T extends AggregateArgs<Schema, Model>>(args: Subset<T, AggregateArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<AggregateResult<Schema, Model, T>>>;
|
|
1341
1430
|
/**
|
|
1342
1431
|
* Groups rows by columns.
|
|
1343
1432
|
* @param args - groupBy args
|
|
@@ -1346,31 +1435,33 @@ interface ModelOperations<Schema extends SchemaDef, Model extends GetModels<Sche
|
|
|
1346
1435
|
* @example
|
|
1347
1436
|
* ```ts
|
|
1348
1437
|
* // group by a field
|
|
1349
|
-
* await
|
|
1438
|
+
* await db.profile.groupBy({
|
|
1350
1439
|
* by: 'country',
|
|
1351
1440
|
* _count: true
|
|
1352
1441
|
* }); // result: `Array<{ country: string, _count: number }>`
|
|
1353
1442
|
*
|
|
1354
1443
|
* // group by multiple fields
|
|
1355
|
-
* await
|
|
1444
|
+
* await db.profile.groupBy({
|
|
1356
1445
|
* by: ['country', 'city'],
|
|
1357
1446
|
* _count: true
|
|
1358
1447
|
* }); // result: `Array<{ country: string, city: string, _count: number }>`
|
|
1359
1448
|
*
|
|
1360
|
-
* // group by with sorting, the `orderBy` fields must be
|
|
1361
|
-
*
|
|
1449
|
+
* // group by with sorting, the `orderBy` fields must be either an aggregation
|
|
1450
|
+
* // or a field used in the `by` list
|
|
1451
|
+
* await db.profile.groupBy({
|
|
1362
1452
|
* by: 'country',
|
|
1363
1453
|
* orderBy: { country: 'desc' }
|
|
1364
1454
|
* });
|
|
1365
1455
|
*
|
|
1366
|
-
* // group by with having (post-aggregation filter), the `having`
|
|
1367
|
-
* // be in the `by` list
|
|
1368
|
-
* await
|
|
1456
|
+
* // group by with having (post-aggregation filter), the fields used in `having` must
|
|
1457
|
+
* // be either an aggregation, or a field used in the `by` list
|
|
1458
|
+
* await db.profile.groupBy({
|
|
1369
1459
|
* by: 'country',
|
|
1370
|
-
* having: { country: 'US' }
|
|
1460
|
+
* having: { country: 'US', age: { _avg: { gte: 18 } } }
|
|
1371
1461
|
* });
|
|
1372
1462
|
*/
|
|
1373
|
-
groupBy<T extends GroupByArgs<Schema, Model>>(args: Subset<T, GroupByArgs<Schema, Model>>): ZenStackPromise<Schema, GroupByResult<Schema, Model, T
|
|
1374
|
-
}
|
|
1463
|
+
groupBy<T extends GroupByArgs<Schema, Model>>(args: Subset<T, GroupByArgs<Schema, Model>>): ZenStackPromise<Schema, Simplify<GroupByResult<Schema, Model, T>>>;
|
|
1464
|
+
};
|
|
1465
|
+
type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>> = Omit<AllModelOperations<Schema, Model>, IsDelegateModel<Schema, Model> extends true ? 'create' | 'createMany' | 'createManyAndReturn' | 'upsert' : never>;
|
|
1375
1466
|
|
|
1376
|
-
export { type
|
|
1467
|
+
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 ZenStackPromise as Z, 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 };
|