@@ -4,7 +4,6 @@ import type {
44 FieldDef ,
55 FieldHasDefault ,
66 FieldIsArray ,
7- FieldIsOptional ,
87 FieldIsRelation ,
98 FieldIsRelationArray ,
109 FieldType ,
@@ -19,12 +18,14 @@ import type {
1918 GetTypeDefField ,
2019 GetTypeDefFields ,
2120 GetTypeDefs ,
21+ ModelFieldIsOptional ,
2222 NonRelationFields ,
2323 RelationFields ,
2424 RelationFieldType ,
2525 RelationInfo ,
2626 ScalarFields ,
2727 SchemaDef ,
28+ TypeDefFieldIsOptional ,
2829} from '../schema' ;
2930import type {
3031 AtLeast ,
@@ -86,21 +87,21 @@ type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>
8687 Schema ,
8788 RelationFieldType < Schema , Model , Key > ,
8889 Pick < Select [ Key ] , 'select' > ,
89- FieldIsOptional < Schema , Model , Key > ,
90+ ModelFieldIsOptional < Schema , Model , Key > ,
9091 FieldIsArray < Schema , Model , Key >
9192 >
9293 : ModelResult <
9394 Schema ,
9495 RelationFieldType < Schema , Model , Key > ,
9596 Pick < Select [ Key ] , 'include' | 'omit' > ,
96- FieldIsOptional < Schema , Model , Key > ,
97+ ModelFieldIsOptional < Schema , Model , Key > ,
9798 FieldIsArray < Schema , Model , Key >
9899 >
99100 : DefaultModelResult <
100101 Schema ,
101102 RelationFieldType < Schema , Model , Key > ,
102103 Omit ,
103- FieldIsOptional < Schema , Model , Key > ,
104+ ModelFieldIsOptional < Schema , Model , Key > ,
104105 FieldIsArray < Schema , Model , Key >
105106 >
106107 : never ;
@@ -143,14 +144,14 @@ export type ModelResult<
143144 Schema ,
144145 RelationFieldType < Schema , Model , Key > ,
145146 I [ Key ] ,
146- FieldIsOptional < Schema , Model , Key > ,
147+ ModelFieldIsOptional < Schema , Model , Key > ,
147148 FieldIsArray < Schema , Model , Key >
148149 >
149150 : DefaultModelResult <
150151 Schema ,
151152 RelationFieldType < Schema , Model , Key > ,
152153 undefined ,
153- FieldIsOptional < Schema , Model , Key > ,
154+ ModelFieldIsOptional < Schema , Model , Key > ,
154155 FieldIsArray < Schema , Model , Key >
155156 > ;
156157 }
@@ -169,9 +170,17 @@ export type SimplifiedModelResult<
169170 Array = false ,
170171> = Simplify < ModelResult < Schema , Model , Args , Optional , Array > > ;
171172
172- export type TypeDefResult < Schema extends SchemaDef , TypeDef extends GetTypeDefs < Schema > > = {
173- [ Key in GetTypeDefFields < Schema , TypeDef > ] : MapTypeDefFieldType < Schema , TypeDef , Key > ;
174- } ;
173+ export type TypeDefResult < Schema extends SchemaDef , TypeDef extends GetTypeDefs < Schema > > = Optional <
174+ {
175+ [ Key in GetTypeDefFields < Schema , TypeDef > ] : MapTypeDefFieldType < Schema , TypeDef , Key > ;
176+ } ,
177+ // optionality
178+ keyof {
179+ [ Key in GetTypeDefFields < Schema , TypeDef > as TypeDefFieldIsOptional < Schema , TypeDef , Key > extends true
180+ ? Key
181+ : never ] : Key ;
182+ }
183+ > ;
175184
176185export type BatchResult = { count : number } ;
177186
@@ -193,11 +202,11 @@ export type WhereInput<
193202 RelationFilter < Schema , Model , Key >
194203 : // enum
195204 GetModelFieldType < Schema , Model , Key > extends GetEnums < Schema >
196- ? EnumFilter < Schema , GetModelFieldType < Schema , Model , Key > , FieldIsOptional < Schema , Model , Key > >
205+ ? EnumFilter < Schema , GetModelFieldType < Schema , Model , Key > , ModelFieldIsOptional < Schema , Model , Key > >
197206 : FieldIsArray < Schema , Model , Key > extends true
198207 ? ArrayFilter < GetModelFieldType < Schema , Model , Key > >
199208 : // primitive
200- PrimitiveFilter < GetModelFieldType < Schema , Model , Key > , FieldIsOptional < Schema , Model , Key > > ;
209+ PrimitiveFilter < GetModelFieldType < Schema , Model , Key > , ModelFieldIsOptional < Schema , Model , Key > > ;
201210} & {
202211 $expr ?: ( eb : ExpressionBuilder < ToKyselySchema < Schema > , Model > ) => OperandExpression < SqlBool > ;
203212} & {
@@ -290,7 +299,7 @@ export type OrderBy<
290299 WithRelation extends boolean ,
291300 WithAggregation extends boolean ,
292301> = {
293- [ Key in NonRelationFields < Schema , Model > ] ?: FieldIsOptional < Schema , Model , Key > extends true
302+ [ Key in NonRelationFields < Schema , Model > ] ?: ModelFieldIsOptional < Schema , Model , Key > extends true
294303 ?
295304 | SortOrder
296305 | {
@@ -391,7 +400,7 @@ export type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schem
391400 // where clause is allowed only if the relation is array or optional
392401 FieldIsArray < Schema , Model , Key > extends true
393402 ? true
394- : FieldIsOptional < Schema , Model , Key > extends true
403+ : ModelFieldIsOptional < Schema , Model , Key > extends true
395404 ? true
396405 : false
397406 > ;
@@ -427,14 +436,14 @@ type ToOneRelationFilter<
427436 WhereInput < Schema , RelationFieldType < Schema , Model , Field > > & {
428437 is ?: NullableIf <
429438 WhereInput < Schema , RelationFieldType < Schema , Model , Field > > ,
430- FieldIsOptional < Schema , Model , Field >
439+ ModelFieldIsOptional < Schema , Model , Field >
431440 > ;
432441 isNot ?: NullableIf <
433442 WhereInput < Schema , RelationFieldType < Schema , Model , Field > > ,
434- FieldIsOptional < Schema , Model , Field >
443+ ModelFieldIsOptional < Schema , Model , Field >
435444 > ;
436445 } ,
437- FieldIsOptional < Schema , Model , Field >
446+ ModelFieldIsOptional < Schema , Model , Field >
438447> ;
439448
440449type RelationFilter <
@@ -460,23 +469,20 @@ type MapTypeDefFieldType<
460469 Schema extends SchemaDef ,
461470 TypeDef extends GetTypeDefs < Schema > ,
462471 Field extends GetTypeDefFields < Schema , TypeDef > ,
463- > =
464- GetTypeDefField < Schema , TypeDef , Field > [ 'type' ] extends GetTypeDefs < Schema >
465- ? WrapType <
466- TypeDefResult < Schema , GetTypeDefField < Schema , TypeDef , Field > [ 'type' ] > ,
467- GetTypeDefField < Schema , TypeDef , Field > [ 'optional' ] ,
468- GetTypeDefField < Schema , TypeDef , Field > [ 'array' ]
469- >
470- : MapFieldDefType < Schema , GetTypeDefField < Schema , TypeDef , Field > > ;
472+ > = MapFieldDefType < Schema , GetTypeDefField < Schema , TypeDef , Field > > ;
471473
472474type MapFieldDefType < Schema extends SchemaDef , T extends Pick < FieldDef , 'type' | 'optional' | 'array' > > = WrapType <
473- T [ 'type' ] extends GetEnums < Schema > ? keyof GetEnum < Schema , T [ 'type' ] > : MapBaseType < T [ 'type' ] > ,
475+ T [ 'type' ] extends GetEnums < Schema >
476+ ? keyof GetEnum < Schema , T [ 'type' ] >
477+ : T [ 'type' ] extends GetTypeDefs < Schema >
478+ ? TypeDefResult < Schema , T [ 'type' ] > & Record < string , unknown >
479+ : MapBaseType < T [ 'type' ] > ,
474480 T [ 'optional' ] ,
475481 T [ 'array' ]
476482> ;
477483
478484type OptionalFieldsForCreate < Schema extends SchemaDef , Model extends GetModels < Schema > > = keyof {
479- [ Key in GetModelFields < Schema , Model > as FieldIsOptional < Schema , Model , Key > extends true
485+ [ Key in GetModelFields < Schema , Model > as ModelFieldIsOptional < Schema , Model , Key > extends true
480486 ? Key
481487 : FieldHasDefault < Schema , Model , Key > extends true
482488 ? Key
@@ -752,7 +758,7 @@ type ScalarUpdatePayload<
752758 | MapModelFieldType < Schema , Model , Field >
753759 | ( Field extends NumericFields < Schema , Model >
754760 ? {
755- set ?: NullableIf < number , FieldIsOptional < Schema , Model , Field > > ;
761+ set ?: NullableIf < number , ModelFieldIsOptional < Schema , Model , Field > > ;
756762 increment ?: number ;
757763 decrement ?: number ;
758764 multiply ?: number ;
@@ -820,7 +826,7 @@ type ToOneRelationUpdateInput<
820826 connectOrCreate ?: ConnectOrCreateInput < Schema , Model , Field > ;
821827 update ?: NestedUpdateInput < Schema , Model , Field > ;
822828 upsert ?: NestedUpsertInput < Schema , Model , Field > ;
823- } & ( FieldIsOptional < Schema , Model , Field > extends true
829+ } & ( ModelFieldIsOptional < Schema , Model , Field > extends true
824830 ? {
825831 disconnect ?: DisconnectInput < Schema , Model , Field > ;
826832 delete ?: NestedDeleteInput < Schema , Model , Field > ;
0 commit comments