Skip to content

Commit 05fd802

Browse files
Fix processing relation fields with missing related_name (#227)
1 parent 8ca41a3 commit 05fd802

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ Please use [this](https://docs.gitlab.com/ee/development/changelog.html) documen
44

55
## [unreleased]
66

7-
## Fixed
7+
### Fixed
88

9-
ci: Removed `black 21.12b0` dependency since bug in `datamodel-codegen-generator` is fixed.
9+
* ci: Removed `black 21.12b0` dependency since bug in `datamodel-codegen-generator` is fixed.
10+
* hasura: Fixed processing relation fields with missing `related_name`.
1011

1112
## 4.2.2 - 2022-02-01
1213

src/dipdup/hasura.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,6 @@ async def _generate_source_tables_metadata(self) -> List[Dict[str, Any]]:
260260

261261
for field in model._meta.fields_map.values():
262262
if isinstance(field, fields.relational.ForeignKeyFieldInstance):
263-
if not isinstance(field.related_name, str):
264-
raise HasuraError(f'`related_name` of `{field}` field must be set')
265-
266263
related_table_name = model_tables[field.model_name]
267264
field_name = field.model_field_name
268265
metadata_tables[table_name]['object_relationships'].append(
@@ -271,18 +268,16 @@ async def _generate_source_tables_metadata(self) -> List[Dict[str, Any]]:
271268
column=field_name + '_id',
272269
)
273270
)
274-
metadata_tables[related_table_name]['array_relationships'].append(
275-
self._format_array_relationship(
276-
related_name=field.related_name,
277-
table=table_name,
278-
column=field_name + '_id',
271+
if field.related_name:
272+
metadata_tables[related_table_name]['array_relationships'].append(
273+
self._format_array_relationship(
274+
related_name=field.related_name,
275+
table=table_name,
276+
column=field_name + '_id',
277+
)
279278
)
280-
)
281279

282280
elif isinstance(field, fields.relational.ManyToManyFieldInstance):
283-
if not isinstance(field.related_name, str):
284-
raise HasuraError(f'`related_name` of `{field}` field must be set')
285-
286281
related_table_name = model_tables[field.model_name]
287282
junction_table_name = field.through
288283

@@ -299,13 +294,14 @@ async def _generate_source_tables_metadata(self) -> List[Dict[str, Any]]:
299294
column=table_name + '_id',
300295
)
301296
)
302-
metadata_tables[related_table_name]['array_relationships'].append(
303-
self._format_array_relationship(
304-
related_name=f'{related_table_name}_{field.related_name}',
305-
table=junction_table_name,
306-
column=related_table_name + '_id',
297+
if field.related_name:
298+
metadata_tables[related_table_name]['array_relationships'].append(
299+
self._format_array_relationship(
300+
related_name=f'{related_table_name}_{field.related_name}',
301+
table=junction_table_name,
302+
column=related_table_name + '_id',
303+
)
307304
)
308-
)
309305

310306
else:
311307
pass

0 commit comments

Comments
 (0)