Merge pull request #3762 from bentiss/nested-openapi

openapi: better handle nested schemas
This commit is contained in:
Lauri Ojansivu 2021-04-27 20:16:59 +03:00 committed by GitHub
commit 6f269d598f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 27 deletions

View file

@ -607,6 +607,9 @@ class SchemaProperty(object):
# deal with subschemas
if '.' in name:
subschema = name.split('.')[0]
subschema = subschema.capitalize()
if name.endswith('$'):
# reference in reference
subschema = ''.join([n.capitalize() for n in self.name.split('.')[:-1]])
@ -621,9 +624,12 @@ class SchemaProperty(object):
print(''' {}:
type: object'''.format(subschema))
return current_schema
elif '$' in name:
# In the form of 'profile.notifications.$.activity'
subschema = name[:name.index('$') - 1] # 'profile.notifications'
subschema = ''.join([s.capitalize() for s in subschema.split('.')])
subschema = name.split('.')[0]
schema_name = self.schema.name + subschema.capitalize()
schema_name = self.schema.name + subschema
name = name.split('.')[-1]
if current_schema != schema_name:
@ -755,7 +761,7 @@ class Schemas(object):
# then print the references
current = None
required_properties = []
properties = [f for f in self.fields if '.' in f.name and not f.name.endswith('$')]
properties = [f for f in self.fields if '.' in f.name and not '$' in f.name]
for prop in properties:
current = prop.print_openapi(6, current, required_properties)
@ -766,7 +772,7 @@ class Schemas(object):
required_properties = []
# then print the references in the references
for prop in [f for f in self.fields if '.' in f.name and f.name.endswith('$')]:
for prop in [f for f in self.fields if '.' in f.name and '$' in f.name]:
current = prop.print_openapi(6, current, required_properties)
if required_properties:

View file

@ -3681,20 +3681,6 @@ definitions:
- createdAt
- modifiedAt
- authenticationMethod
UsersEmails:
type: object
properties:
address:
description: |
The email address
type: string
verified:
description: |
Has the email been verified
type: boolean
required:
- address
- verified
UsersProfile:
type: object
properties:
@ -3750,14 +3736,6 @@ definitions:
type: array
items:
$ref: "#/definitions/UsersProfileNotifications"
activity:
description: |
The id of the activity this notification references
type: string
read:
description: |
the date on which this notification was read
type: string
showCardsCountAt:
description: |
showCardCountAt field of the user
@ -3813,7 +3791,6 @@ definitions:
Reference to the board templates swimlane Id
type: string
required:
- activity
- templatesBoardId
- cardTemplatesSwimlaneId
- listTemplatesSwimlaneId
@ -3829,3 +3806,30 @@ definitions:
description: |
last hit that was returned
type: number
UsersEmails:
type: object
properties:
address:
description: |
The email address
type: string
verified:
description: |
Has the email been verified
type: boolean
required:
- address
- verified
UsersProfileNotifications:
type: object
properties:
activity:
description: |
The id of the activity this notification references
type: string
read:
description: |
the date on which this notification was read
type: string
required:
- activity