Skip to content

Commit 1db967c

Browse files
committed
Fix edge case for messages without $defs
1 parent b87baad commit 1db967c

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/common/asyncapi.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,16 +155,19 @@ def register_channel_operation(
155155
_operation_message_refs = []
156156
for message in messages:
157157
# TODO: Check for overlapping model schemas, if they are different log a warning!
158-
_components_schemas[message.__name__] = message.model_json_schema(
158+
_message_json_schema = message.model_json_schema(
159159
mode="validation" if operation_type == "receive" else "serialization",
160160
ref_template="#/components/schemas/{model}",
161161
)
162-
_components_schemas.update(
163-
message.model_json_schema(mode="serialization", ref_template="#/components/schemas/{model}")["$defs"]
164-
)
162+
163+
_components_schemas[message.__name__] = _message_json_schema
164+
165+
if _message_json_schema.get("$defs"):
166+
_components_schemas.update(_message_json_schema["$defs"])
165167
_channels[channel_id].messages[message.__name__] = pa.Message( # type: ignore
166168
payload=pa.Reference(ref=f"#/components/schemas/{message.__name__}")
167169
)
170+
168171
# Cannot point to the /components path
169172
_operation_message_refs.append(pa.Reference(ref=f"#/channels/{channel_id}/messages/{message.__name__}"))
170173

0 commit comments

Comments
 (0)