@@ -75,34 +75,40 @@ export interface Filter extends RawFilter {
7575 not ( ) : Filter ;
7676}
7777
78- type StringOnlyMethods = {
79- startsWith ( value : string | null | undefined ) : Filter ;
80- iStartsWith ( value : string | null | undefined ) : Filter ;
81- endsWith ( value : string | null | undefined ) : Filter ;
82- iEndsWith ( value : string | null | undefined ) : Filter ;
83- contains ( value : string | null | undefined ) : Filter ;
84- iContains ( value : string | null | undefined ) : Filter ;
85- iEqual ( value : string | null | undefined ) : Filter ;
86- ieq ( value : string | null | undefined ) : Filter ;
78+ type ComparableValue < Val , ColumnType = any > =
79+ | Val
80+ | null
81+ | undefined
82+ | ColumnFilterType < any , ColumnType > ;
83+
84+ type StringOnlyMethods < ColumnType = 'string' > = {
85+ startsWith ( value : ComparableValue < string , ColumnType > ) : Filter ;
86+ iStartsWith ( value : ComparableValue < string , ColumnType > ) : Filter ;
87+ endsWith ( value : ComparableValue < string , ColumnType > ) : Filter ;
88+ iEndsWith ( value : ComparableValue < string , ColumnType > ) : Filter ;
89+ contains ( value : ComparableValue < string , ColumnType > ) : Filter ;
90+ iContains ( value : ComparableValue < string , ColumnType > ) : Filter ;
91+ iEqual ( value : ComparableValue < string , ColumnType > ) : Filter ;
92+ ieq ( value : ComparableValue < string , ColumnType > ) : Filter ;
8793} ;
8894
8995export type ColumnFilterType < Val , ColumnType = any > = {
90- equal ( value : Val | null | undefined ) : Filter ;
91- eq ( value : Val | null | undefined ) : Filter ;
92- notEqual ( value : Val | null | undefined ) : Filter ;
93- ne ( value : Val | null | undefined ) : Filter ;
94- lessThan ( value : Val | null | undefined ) : Filter ;
95- lt ( value : Val | null | undefined ) : Filter ;
96- lessThanOrEqual ( value : Val | null | undefined ) : Filter ;
97- le ( value : Val | null | undefined ) : Filter ;
98- greaterThan ( value : Val | null | undefined ) : Filter ;
99- gt ( value : Val | null | undefined ) : Filter ;
100- greaterThanOrEqual ( value : Val | null | undefined ) : Filter ;
101- ge ( value : Val | null | undefined ) : Filter ;
102- in ( values : readonly ( Val | null | undefined ) [ ] ) : Filter ;
103- between ( from : Val | null | undefined , to : Val | null | undefined ) : Filter ;
104- notIn ( values : readonly ( Val | null | undefined ) [ ] ) : Filter ;
105- } & ( ColumnType extends 'string' ? StringOnlyMethods : { } ) ;
96+ equal ( value : ComparableValue < Val , ColumnType > ) : Filter ;
97+ eq ( value : ComparableValue < Val , ColumnType > ) : Filter ;
98+ notEqual ( value : ComparableValue < Val , ColumnType > ) : Filter ;
99+ ne ( value : ComparableValue < Val , ColumnType > ) : Filter ;
100+ lessThan ( value : ComparableValue < Val , ColumnType > ) : Filter ;
101+ lt ( value : ComparableValue < Val , ColumnType > ) : Filter ;
102+ lessThanOrEqual ( value : ComparableValue < Val , ColumnType > ) : Filter ;
103+ le ( value : ComparableValue < Val , ColumnType > ) : Filter ;
104+ greaterThan ( value : ComparableValue < Val , ColumnType > ) : Filter ;
105+ gt ( value : ComparableValue < Val , ColumnType > ) : Filter ;
106+ greaterThanOrEqual ( value : ComparableValue < Val , ColumnType > ) : Filter ;
107+ ge ( value : ComparableValue < Val , ColumnType > ) : Filter ;
108+ in ( values : readonly ComparableValue < Val , ColumnType > [ ] ) : Filter ;
109+ between ( from : ComparableValue < Val , ColumnType > , to : ComparableValue < Val , ColumnType > ) : Filter ;
110+ notIn ( values : readonly ComparableValue < Val , ColumnType > [ ] ) : Filter ;
111+ } & ( ColumnType extends 'string' ? StringOnlyMethods < ColumnType > : { } ) ;
106112
107113export type JsonArray = Array < JsonValue > ;
108114export type JsonObject = { [ key : string ] : JsonValue } ;
0 commit comments