Skip to content

Commit 15037d3

Browse files
committed
fix foreign tree api issue
1 parent 0745017 commit 15037d3

File tree

4 files changed

+25
-3
lines changed

4 files changed

+25
-3
lines changed

src/fastapi_quickcrud/misc/abstract_query.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,28 @@ def model_query(self,
189189
stmt = select(self.model).where(and_(*filter_list))
190190
return stmt
191191

192+
def get_one_with_foreign_pk(self, *,
193+
join_mode,
194+
query,
195+
target_model,
196+
abstract_param=None
197+
) -> BinaryExpression:
198+
model = self.foreign_table_mapping[target_model]
199+
filter_list: List[BinaryExpression] = find_query_builder(param=query,
200+
model=model)
201+
path_filter_list: List[BinaryExpression] = path_query_builder(params=abstract_param,
202+
model=self.foreign_table_mapping)
203+
join_table_instance_list: list = self.get_join_select_fields(join_mode)
204+
205+
if not isinstance(self.model, Table):
206+
model = model.__table__
207+
208+
stmt = select(*[model] + join_table_instance_list).filter(and_(*filter_list + path_filter_list))
209+
210+
stmt = self.get_join_by_excpression(stmt, join_mode=join_mode)
211+
return stmt
212+
213+
192214
# def update(self, *,
193215
# update_args,
194216
# extra_query,

src/fastapi_quickcrud/misc/abstract_route.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -785,7 +785,7 @@ def get_one_with_foreign_tree(response: Response,
785785
target_model = request.url.path.split("/")[-2]
786786
join = query.__dict__.pop('join_foreign_table', None)
787787

788-
stmt = query_service.get_many_with_foreign_pk(query=query.__dict__, join_mode=join,
788+
stmt = query_service.get_one_with_foreign_pk(query=query.__dict__, join_mode=join,
789789
target_model=target_model)
790790
query_result = execute_service.execute(session, stmt)
791791
parsed_response = parsing_service.find_one(response_model=response_model,

src/fastapi_quickcrud/misc/schema_builder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,7 +1657,7 @@ def foreign_tree_get_many(self) -> Tuple:
16571657
if self.uuid_type_columns:
16581658
request_validation.append(lambda self_object: self._value_of_list_to_str(self_object,
16591659
self.uuid_type_columns))
1660-
for local_column, refer_table_info in self.reference_mapper.items():
1660+
for local_column, refer_table_info in reference_mapper.items():
16611661
response_fields.append((f"{refer_table_info['foreign_table_name']}_foreign",
16621662
self.foreign_table_response_model_sets[refer_table_info['foreign_table']],
16631663
None))
@@ -1750,7 +1750,7 @@ def foreign_tree_get_one(self) -> Tuple:
17501750
request_validation.append(lambda self_object: self._value_of_list_to_str(self_object,
17511751
self.uuid_type_columns))
17521752

1753-
for local_column, refer_table_info in self.reference_mapper.items():
1753+
for local_column, refer_table_info in reference_mapper.items():
17541754
response_fields.append((f"{refer_table_info['foreign_table_name']}_foreign",
17551755
self.foreign_table_response_model_sets[refer_table_info['foreign_table']],
17561756
None))

tutorial/foreign_tree/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)