1
1
import PostgrestTransformBuilder from './PostgrestTransformBuilder'
2
- import { GenericSchema , GenericTable } from './types'
2
+ import { GenericSchema } from './types'
3
3
4
4
type FilterOperator =
5
5
| 'eq'
@@ -31,28 +31,30 @@ type FilterOperator =
31
31
// assume that all tables have valid relationships to each other, despite
32
32
// nonexistent foreign keys.
33
33
type ResolveFilterValue <
34
- Tables extends Record < string , GenericTable > ,
34
+ Schema extends GenericSchema ,
35
35
Row extends Record < string , unknown > ,
36
36
ColumnName extends string
37
37
> = ColumnName extends `${infer RelationshipTable } .${infer Remainder } `
38
38
? Remainder extends `${infer _ } .${infer _ } `
39
- ? ResolveFilterValue < Tables , Row , Remainder >
40
- : ResolveFilterRelationshipValue < Tables , RelationshipTable , Remainder >
39
+ ? ResolveFilterValue < Schema , Row , Remainder >
40
+ : ResolveFilterRelationshipValue < Schema , RelationshipTable , Remainder >
41
41
: ColumnName extends keyof Row
42
42
? Row [ ColumnName ]
43
43
: never
44
44
45
45
type ResolveFilterRelationshipValue <
46
- Tables extends Record < string , GenericTable > ,
46
+ Schema extends GenericSchema ,
47
47
RelationshipTable extends string ,
48
48
RelationshipColumn extends string
49
- > = RelationshipTable extends keyof Tables
50
- ? 'Row' extends keyof Tables [ RelationshipTable ]
51
- ? RelationshipColumn extends keyof Tables [ RelationshipTable ] [ 'Row' ]
52
- ? Tables [ RelationshipTable ] [ 'Row' ] [ RelationshipColumn ]
49
+ > = Schema [ 'Tables' ] & Schema [ 'Views' ] extends infer TablesAndViews
50
+ ? RelationshipTable extends keyof TablesAndViews
51
+ ? 'Row' extends keyof TablesAndViews [ RelationshipTable ]
52
+ ? RelationshipColumn extends keyof TablesAndViews [ RelationshipTable ] [ 'Row' ]
53
+ ? TablesAndViews [ RelationshipTable ] [ 'Row' ] [ RelationshipColumn ]
54
+ : unknown
53
55
: unknown
54
56
: unknown
55
- : unknown
57
+ : never
56
58
57
59
export default class PostgrestFilterBuilder <
58
60
Schema extends GenericSchema ,
@@ -71,9 +73,9 @@ export default class PostgrestFilterBuilder<
71
73
*/
72
74
eq < ColumnName extends string > (
73
75
column : ColumnName ,
74
- value : ResolveFilterValue < Schema [ 'Tables' ] , Row , ColumnName > extends never
76
+ value : ResolveFilterValue < Schema , Row , ColumnName > extends never
75
77
? NonNullable < unknown >
76
- : NonNullable < ResolveFilterValue < Schema [ 'Tables' ] , Row , ColumnName > >
78
+ : NonNullable < ResolveFilterValue < Schema , Row , ColumnName > >
77
79
) : this {
78
80
this . url . searchParams . append ( column , `eq.${ value } ` )
79
81
return this
@@ -87,9 +89,9 @@ export default class PostgrestFilterBuilder<
87
89
*/
88
90
neq < ColumnName extends string > (
89
91
column : ColumnName ,
90
- value : ResolveFilterValue < Schema [ 'Tables' ] , Row , ColumnName > extends never
92
+ value : ResolveFilterValue < Schema , Row , ColumnName > extends never
91
93
? unknown
92
- : ResolveFilterValue < Schema [ 'Tables' ] , Row , ColumnName >
94
+ : ResolveFilterValue < Schema , Row , ColumnName >
93
95
) : this {
94
96
this . url . searchParams . append ( column , `neq.${ value } ` )
95
97
return this
@@ -267,9 +269,9 @@ export default class PostgrestFilterBuilder<
267
269
*/
268
270
in < ColumnName extends string > (
269
271
column : ColumnName ,
270
- values : ResolveFilterValue < Schema [ 'Tables' ] , Row , ColumnName > extends never
272
+ values : ResolveFilterValue < Schema , Row , ColumnName > extends never
271
273
? unknown [ ]
272
- : ReadonlyArray < ResolveFilterValue < Schema [ 'Tables' ] , Row , ColumnName > >
274
+ : ReadonlyArray < ResolveFilterValue < Schema , Row , ColumnName > >
273
275
) : this {
274
276
const cleanedValues = Array . from ( new Set ( values ) )
275
277
. map ( ( s ) => {
0 commit comments