Skip to content

Commit

Permalink
chore(openrpc): Support for errors data model
Browse files Browse the repository at this point in the history
  • Loading branch information
qweeze committed Oct 14, 2023
1 parent 83ba705 commit 818c158
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions fastapi_jsonrpc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1338,6 +1338,20 @@ def openrpc(self):
result_model = create_model(f'{route.name}_Result', result=(route.result_model or Any, ...))
result_schema = result_model.schema(ref_template=ref_template)

errors_spec = []
for error in route.errors:
spec = {
'code': error.CODE,
'message': error.MESSAGE,
}
error_model = error.get_data_model()
if error_model is not None:
error_schema = error_model.schema(ref_template=ref_template)
schemas_spec.update(error_schema.pop('definitions', {}))
spec['data'] = error_schema

errors_spec.append(spec)

method_spec = {
'name': route.name,
'summary': route.summary,
Expand All @@ -1359,13 +1373,7 @@ def openrpc(self):
}
for tag in route.tags
],
'errors': [
{
'code': error.CODE,
'message': error.MESSAGE,
}
for error in route.errors
],
'errors': errors_spec,
}
methods_spec.append(method_spec)
schemas_spec.update(params_schema.get('definitions', {}))
Expand Down

0 comments on commit 818c158

Please sign in to comment.