Skip to content

Commit 4e6b8f6

Browse files
committed
less if/else
1 parent 0fe28f8 commit 4e6b8f6

1 file changed

Lines changed: 25 additions & 34 deletions

File tree

fastapi_jsonapi/views/view_base.py

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -150,48 +150,39 @@ def process_db_items_and_create_prepare(
150150
for parent_db_item in parent_db_items:
151151
cache_key = (str(parent_db_item.id), previous_resource_type)
152152
current_db_item = getattr(parent_db_item, related_field_name)
153-
if isinstance(current_db_item, Iterable):
154-
relationship_data_items = []
155-
156-
for db_item in current_db_item:
157-
next_current_db_item.append(db_item)
158-
data_for_relationship, new_included = process_db_item(
159-
related_db_item=db_item,
160-
)
161-
162-
cls.update_known_included(
163-
included_objects=included_objects,
164-
new_included=new_included,
165-
)
166-
relationship_data_items.append(data_for_relationship)
167-
168-
cls.update_related_object(
169-
relationship_data=relationship_data_items,
170-
relationships_schema=relationships_schema,
171-
object_schema=object_schema,
172-
included_objects=included_objects,
173-
cache_key=cache_key,
174-
related_field_name=related_field_name,
175-
)
176-
else:
177-
next_current_db_item.append(current_db_item)
153+
current_is_single = False
154+
if not isinstance(current_db_item, Iterable):
155+
# hack to do less if/else
156+
current_db_item = [current_db_item]
157+
current_is_single = True
158+
relationship_data_items = []
159+
160+
for db_item in current_db_item:
161+
next_current_db_item.append(db_item)
178162
data_for_relationship, new_included = process_db_item(
179-
related_db_item=current_db_item,
163+
related_db_item=db_item,
180164
)
181165

182166
cls.update_known_included(
183167
included_objects=included_objects,
184168
new_included=new_included,
185169
)
170+
relationship_data_items.append(data_for_relationship)
171+
172+
if current_is_single:
173+
# if initially was single, get back one dict
174+
# hack to do less if/else
175+
relationship_data_items = relationship_data_items[0]
176+
177+
cls.update_related_object(
178+
relationship_data=relationship_data_items,
179+
relationships_schema=relationships_schema,
180+
object_schema=object_schema,
181+
included_objects=included_objects,
182+
cache_key=cache_key,
183+
related_field_name=related_field_name,
184+
)
186185

187-
cls.update_related_object(
188-
relationship_data=data_for_relationship,
189-
relationships_schema=relationships_schema,
190-
object_schema=object_schema,
191-
included_objects=included_objects,
192-
cache_key=cache_key,
193-
related_field_name=related_field_name,
194-
)
195186
return next_current_db_item
196187

197188
def process_include_with_nested(

0 commit comments

Comments
 (0)