File tree Expand file tree Collapse file tree 3 files changed +755
-36
lines changed
src/strawberry_sqlalchemy_mapper Expand file tree Collapse file tree 3 files changed +755
-36
lines changed Original file line number Diff line number Diff line change @@ -81,10 +81,12 @@ async def load_fn(keys: List[Tuple]) -> List[Any]:
81
81
related_model_key_label = relationship .local_remote_pairs [1 ][1 ].key
82
82
83
83
self_model_key = relationship .local_remote_pairs [0 ][0 ].key
84
+ related_model_key = relationship .local_remote_pairs [1 ][0 ].key
84
85
85
86
remote_to_use = relationship .local_remote_pairs [0 ][1 ]
86
87
query_keys = tuple ([item [0 ] for item in keys ])
87
88
89
+ # This query returns every row equal (self_model.key, related_model)
88
90
query = (
89
91
select (
90
92
label (self_model_key_label , getattr (
@@ -94,12 +96,12 @@ async def load_fn(keys: List[Tuple]) -> List[Any]:
94
96
.join (
95
97
relationship .secondary ,
96
98
getattr (relationship .secondary .c ,
97
- related_model_key_label ) == related_model . id
99
+ related_model_key_label ) == getattr ( related_model , related_model_key )
98
100
)
99
101
.join (
100
102
self_model ,
101
103
getattr (relationship .secondary .c ,
102
- self_model_key_label ) == self_model . id
104
+ self_model_key_label ) == getattr ( self_model , self_model_key )
103
105
)
104
106
.filter (
105
107
remote_to_use .in_ (query_keys )
Original file line number Diff line number Diff line change @@ -517,24 +517,16 @@ async def resolve(self, info: Info):
517
517
]
518
518
)
519
519
else :
520
- # If has a secondary table, gets only the first id since the other id cannot be get without a query
521
- # breakpoint()
522
- local_remote_pairs_secondary_table_local = relationship . local_remote_pairs [ 0 ][0 ]
520
+ # If has a secondary table, gets only the first ID as additional IDs require a separate query
521
+ local_remote_pairs_secondary_table_local = relationship . local_remote_pairs [
522
+ 0 ][0 ]
523
523
relationship_key = tuple (
524
524
[
525
- getattr (self , local_remote_pairs_secondary_table_local .key ),
525
+ getattr (
526
+ self , local_remote_pairs_secondary_table_local .key ),
526
527
]
527
528
)
528
529
529
- # relationship_key = tuple(
530
- # [
531
- # getattr(self, local.key)
532
- # for local, _ in relationship.local_remote_pairs or []
533
- # if local.key
534
- # ]
535
- # )
536
- # breakpoint()
537
-
538
530
if any (item is None for item in relationship_key ):
539
531
if relationship .uselist :
540
532
return []
@@ -544,7 +536,6 @@ async def resolve(self, info: Info):
544
536
loader = info .context ["sqlalchemy_loader" ]
545
537
else :
546
538
loader = info .context .sqlalchemy_loader
547
- # breakpoint()
548
539
related_objects = await loader .loader_for (relationship ).load (
549
540
relationship_key
550
541
)
You can’t perform that action at this time.
0 commit comments