@@ -70,58 +70,60 @@ export const generateDefinitions = ({
7070 ] ,
7171 [ ...( model . parent ? [ model . parent ] : [ ] ) , ...( model . interfaces || [ ] ) ] ,
7272 ) ,
73- input ( `${ model . name } Where` , [
74- ...model . fields
75- . filter ( ( { kind, unique, filterable } ) => ( unique || filterable ) && kind !== 'relation' )
76- . map ( ( field ) => ( {
77- name : field . name ,
78- type : field . type ,
73+ ...[ false , true ] . map ( ( isSubWhere ) =>
74+ input ( `${ model . name } ${ isSubWhere ? 'Sub' : '' } Where` , [
75+ ...model . fields
76+ . filter ( ( { kind, unique, filterable } ) => ( unique || filterable ) && kind !== 'relation' )
77+ . map ( ( field ) => ( {
78+ name : field . name ,
79+ type : field . type ,
80+ list : true ,
81+ default : typeof field . filterable === 'object' ? field . filterable . default : undefined ,
82+ nonNull : isSubWhere ? false : typeof field . filterable === 'object' && field . filterable . nonNull === true ,
83+ } ) ) ,
84+ ...model . fields
85+ . filter ( ( { comparable } ) => comparable )
86+ . flatMap ( ( field ) => [
87+ { name : `${ field . name } _GT` , type : field . type } ,
88+ { name : `${ field . name } _GTE` , type : field . type } ,
89+ { name : `${ field . name } _LT` , type : field . type } ,
90+ { name : `${ field . name } _LTE` , type : field . type } ,
91+ ] ) ,
92+ ...model . relations
93+ . filter ( ( { field : { filterable } } ) => filterable )
94+ . map ( ( { name, targetModel, field } ) => ( {
95+ name,
96+ type : `${ targetModel . name } Where` ,
97+ nonNull : typeof field . filterable === 'object' && field . filterable . nonNull === true ,
98+ } ) ) ,
99+ ...model . reverseRelations
100+ . filter ( ( { field : { reverseFilterable } } ) => reverseFilterable )
101+ . flatMap ( ( relation ) => [
102+ {
103+ name : `${ relation . name } _SOME` ,
104+ type : `${ relation . targetModel . name } Where` ,
105+ } ,
106+ {
107+ name : `${ relation . name } _NONE` ,
108+ type : `${ relation . targetModel . name } Where` ,
109+ } ,
110+ ] ) ,
111+ {
112+ name : 'NOT' ,
113+ type : `${ model . name } SubWhere` ,
114+ } ,
115+ {
116+ name : 'AND' ,
117+ type : `${ model . name } SubWhere` ,
79118 list : true ,
80- default : typeof field . filterable === 'object' ? field . filterable . default : undefined ,
81- nonNull : typeof field . filterable === 'object' && field . filterable . nonNull === true ,
82- } ) ) ,
83- ...model . fields
84- . filter ( ( { comparable } ) => comparable )
85- . flatMap ( ( field ) => [
86- { name : `${ field . name } _GT` , type : field . type } ,
87- { name : `${ field . name } _GTE` , type : field . type } ,
88- { name : `${ field . name } _LT` , type : field . type } ,
89- { name : `${ field . name } _LTE` , type : field . type } ,
90- ] ) ,
91- ...model . relations
92- . filter ( ( { field : { filterable } } ) => filterable )
93- . map ( ( { name, targetModel, field } ) => ( {
94- name,
95- type : `${ targetModel . name } Where` ,
96- nonNull : typeof field . filterable === 'object' && field . filterable . nonNull === true ,
97- } ) ) ,
98- ...model . reverseRelations
99- . filter ( ( { field : { reverseFilterable } } ) => reverseFilterable )
100- . flatMap ( ( relation ) => [
101- {
102- name : `${ relation . name } _SOME` ,
103- type : `${ relation . targetModel . name } Where` ,
104- } ,
105- {
106- name : `${ relation . name } _NONE` ,
107- type : `${ relation . targetModel . name } Where` ,
108- } ,
109- ] ) ,
110- {
111- name : 'NOT' ,
112- type : `${ model . name } Where` ,
113- } ,
114- {
115- name : 'AND' ,
116- type : `${ model . name } Where` ,
117- list : true ,
118- } ,
119- {
120- name : 'OR' ,
121- type : `${ model . name } Where` ,
122- list : true ,
123- } ,
124- ] ) ,
119+ } ,
120+ {
121+ name : 'OR' ,
122+ type : `${ model . name } SubWhere` ,
123+ list : true ,
124+ } ,
125+ ] ) ,
126+ ) ,
125127 input (
126128 `${ model . name } WhereUnique` ,
127129 model . fields . filter ( ( { unique } ) => unique ) . map ( ( field ) => ( { name : field . name , type : field . type } ) ) ,
0 commit comments