@@ -37,22 +37,6 @@ type FilterRelationNodes<Nodes extends Node[]> = UnionToArray<
37
37
} [ number ]
38
38
>
39
39
40
- /*
41
- ** Because of pg-meta types generation there is some cases where a same relationship can be duplicated
42
- ** if the relation is across schemas and views this ensure that we dedup those relations and treat them
43
- ** as postgrest would.
44
- ** TODO: This is necessary to allow the check for required desambiguation but shouldn't if the
45
- ** generated relationships were correct pointing out that each realation is actually toward a different schema
46
- */
47
- export type DeduplicateRelationships < T extends readonly unknown [ ] > = T extends readonly [
48
- infer First ,
49
- ...infer Rest
50
- ]
51
- ? First extends Rest [ number ]
52
- ? DeduplicateRelationships < Rest extends readonly unknown [ ] ? Rest : [ ] >
53
- : [ First , ...DeduplicateRelationships < Rest extends readonly unknown [ ] ? Rest : [ ] > ]
54
- : T
55
-
56
40
export type ResolveRelationships <
57
41
Schema extends GenericSchema ,
58
42
RelationName extends string ,
@@ -126,7 +110,7 @@ export type CheckDuplicateEmbededReference<
126
110
RelationsNodes
127
111
> extends infer ResolvedRels
128
112
? ResolvedRels extends unknown [ ]
129
- ? FindDuplicates < DeduplicateRelationships < ResolvedRels > > extends infer Duplicates
113
+ ? FindDuplicates < ResolvedRels > extends infer Duplicates
130
114
? Duplicates extends never
131
115
? false
132
116
: Duplicates extends { fieldName : infer FieldName extends string }
@@ -143,7 +127,7 @@ export type CheckDuplicateEmbededReference<
143
127
* Returns a boolean representing whether there is a foreign key referencing
144
128
* a given relation.
145
129
*/
146
- export type HasFKeyToFRel < FRelName , Relationships > = Relationships extends [ infer R ]
130
+ type HasFKeyToFRel < FRelName , Relationships > = Relationships extends [ infer R ]
147
131
? R extends { referencedRelation : FRelName }
148
132
? true
149
133
: false
@@ -155,7 +139,7 @@ export type HasFKeyToFRel<FRelName, Relationships> = Relationships extends [infe
155
139
/**
156
140
* Checks if there is more than one relation to a given foreign relation name in the Relationships.
157
141
*/
158
- export type HasMultipleFKeysToFRel < FRelName , Relationships > = Relationships extends [
142
+ type HasMultipleFKeysToFRel < FRelName , Relationships > = Relationships extends [
159
143
infer R ,
160
144
...infer Rest
161
145
]
@@ -182,10 +166,7 @@ type CheckRelationshipError<
182
166
direction : 'reverse'
183
167
}
184
168
? // We check if there is possible confusion with other relations with this table
185
- HasMultipleFKeysToFRel <
186
- RelatedRelationName ,
187
- DeduplicateRelationships < Relationships >
188
- > extends true
169
+ HasMultipleFKeysToFRel < RelatedRelationName , Relationships > extends true
189
170
? // If there is, postgrest will fail at runtime, and require desambiguation via hinting
190
171
RequireHintingSelectQueryError <
191
172
RelatedRelationName ,
@@ -203,7 +184,7 @@ type CheckRelationshipError<
203
184
}
204
185
? HasMultipleFKeysToFRel <
205
186
RelatedRelationName ,
206
- DeduplicateRelationships < TablesAndViews < Schema > [ From ] [ 'Relationships' ] >
187
+ TablesAndViews < Schema > [ From ] [ 'Relationships' ]
207
188
> extends true
208
189
? RequireHintingSelectQueryError < From extends string ? From : 'unknown' , RelatedRelationName >
209
190
: FoundRelation
@@ -255,10 +236,7 @@ type ResolveReverseRelationship<
255
236
from : CurrentTableOrView
256
237
}
257
238
: // If the relation was found via implicit relation naming, we must ensure there is no conflicting matches
258
- HasMultipleFKeysToFRel <
259
- RelatedRelationName ,
260
- DeduplicateRelationships < Relationships >
261
- > extends true
239
+ HasMultipleFKeysToFRel < RelatedRelationName , Relationships > extends true
262
240
? RequireHintingSelectQueryError <
263
241
RelatedRelationName ,
264
242
CurrentTableOrView extends string ? CurrentTableOrView : 'unknown'
0 commit comments