Skip to content

Commit 80aaac1

Browse files
committed
feat: improvements to synth, ids, refs, added json schema synth
1 parent 53e576f commit 80aaac1

10 files changed

Lines changed: 484 additions & 281 deletions

File tree

__tests__/example.json

Lines changed: 49 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,7 @@
3535
"type": "string"
3636
},
3737
"address": {
38-
"type": "object",
39-
"required": [
40-
"name"
41-
],
42-
"additionalProperties": false,
43-
"properties": {
44-
"postcode": {
45-
"type": "integer",
46-
"format": "int32",
47-
"minimum": 1000,
48-
"maximum": 9999
49-
}
50-
}
38+
"$ref": "#/components/schemas/Address"
5139
},
5240
"age": {
5341
"type": "integer",
@@ -57,6 +45,21 @@
5745
}
5846
},
5947
"UpdateUserRequest": {
48+
"type": "object",
49+
"minProperties": 1,
50+
"additionalProperties": false,
51+
"properties": {
52+
"address": {
53+
"$ref": "#/components/schemas/Address"
54+
},
55+
"age": {
56+
"type": "integer",
57+
"format": "int32",
58+
"minimum": 0
59+
}
60+
}
61+
},
62+
"CreateUserRequest": {
6063
"type": "object",
6164
"required": [
6265
"name"
@@ -67,19 +70,7 @@
6770
"type": "string"
6871
},
6972
"address": {
70-
"type": "object",
71-
"required": [
72-
"name"
73-
],
74-
"additionalProperties": false,
75-
"properties": {
76-
"postcode": {
77-
"type": "integer",
78-
"format": "int32",
79-
"minimum": 1000,
80-
"maximum": 9999
81-
}
82-
}
73+
"$ref": "#/components/schemas/Address"
8374
},
8475
"age": {
8576
"type": "integer",
@@ -92,36 +83,7 @@
9283
"type": "array",
9384
"uniqueItems": true,
9485
"items": {
95-
"type": "object",
96-
"required": [
97-
"name"
98-
],
99-
"additionalProperties": false,
100-
"properties": {
101-
"name": {
102-
"type": "string"
103-
},
104-
"address": {
105-
"type": "object",
106-
"required": [
107-
"name"
108-
],
109-
"additionalProperties": false,
110-
"properties": {
111-
"postcode": {
112-
"type": "integer",
113-
"format": "int32",
114-
"minimum": 1000,
115-
"maximum": 9999
116-
}
117-
}
118-
},
119-
"age": {
120-
"type": "integer",
121-
"format": "int32",
122-
"minimum": 0
123-
}
124-
}
86+
"$ref": "#/components/schemas/User"
12587
}
12688
}
12789
},
@@ -131,7 +93,7 @@
13193
"in": "path",
13294
"required": true,
13395
"schema": {
134-
"type": "string"
96+
"$ref": "#/components/schemas/Id"
13597
}
13698
}
13799
},
@@ -146,7 +108,7 @@
146108
"paths": {
147109
"/users": {
148110
"get": {
149-
"operationId": "listUsers",
111+
"operationId": "listUsersCommand",
150112
"tags": [
151113
"user"
152114
],
@@ -162,6 +124,34 @@
162124
}
163125
}
164126
}
127+
},
128+
"post": {
129+
"operationId": "createUserCommand",
130+
"tags": [
131+
"user"
132+
],
133+
"requestBody": {
134+
"description": "",
135+
"content": {
136+
"application/json": {
137+
"schema": {
138+
"$ref": "#/components/schemas/CreateUserRequest"
139+
}
140+
}
141+
}
142+
},
143+
"responses": {
144+
"200": {
145+
"description": "User 200 response",
146+
"content": {
147+
"application/json": {
148+
"schema": {
149+
"$ref": "#/components/schemas/Users"
150+
}
151+
}
152+
}
153+
}
154+
}
165155
}
166156
},
167157
"/users/{userId}": {
@@ -211,7 +201,7 @@
211201
"user"
212202
],
213203
"requestBody": {
214-
"description": "postRequestBody",
204+
"description": "",
215205
"content": {
216206
"application/json": {
217207
"schema": {

__tests__/example.yaml

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ info:
55
components:
66
schemas:
77
Address:
8-
&a1
98
type: object
109
required:
1110
- name
@@ -17,45 +16,46 @@ components:
1716
minimum: 1000
1817
maximum: 9999
1918
Id:
20-
&a3
2119
type: string
2220
User:
23-
&a2
21+
&a1
2422
type: object
2523
required:
2624
- name
2725
additionalProperties: false
2826
properties:
2927
name:
3028
type: string
31-
address: *a1
29+
address:
30+
$ref: "#/components/schemas/Address"
3231
age:
3332
type: integer
3433
format: int32
3534
minimum: 0
3635
UpdateUserRequest:
3736
type: object
38-
required:
39-
- name
37+
minProperties: 1
4038
additionalProperties: false
4139
properties:
42-
name:
43-
type: string
44-
address: *a1
40+
address:
41+
$ref: "#/components/schemas/Address"
4542
age:
4643
type: integer
4744
format: int32
4845
minimum: 0
46+
CreateUserRequest: *a1
4947
Users:
5048
type: array
5149
uniqueItems: true
52-
items: *a2
50+
items:
51+
$ref: "#/components/schemas/User"
5352
parameters:
5453
UserId:
5554
name: userId
5655
in: path
5756
required: true
58-
schema: *a3
57+
schema:
58+
$ref: "#/components/schemas/Id"
5959
securitySchemes:
6060
HttpBearerJwtScheme:
6161
type: http
@@ -64,9 +64,26 @@ components:
6464
paths:
6565
/users:
6666
get:
67-
operationId: listUsers
67+
operationId: listUsersCommand
68+
tags:
69+
- user
70+
responses:
71+
"200":
72+
description: User 200 response
73+
content:
74+
application/json:
75+
schema:
76+
$ref: "#/components/schemas/Users"
77+
post:
78+
operationId: createUserCommand
6879
tags:
6980
- user
81+
requestBody:
82+
description: ""
83+
content:
84+
application/json:
85+
schema:
86+
$ref: "#/components/schemas/CreateUserRequest"
7087
responses:
7188
"200":
7289
description: User 200 response
@@ -90,7 +107,7 @@ paths:
90107
operationId: deleteUserByIdCommand
91108
security:
92109
- HttpBearerJwtScheme:
93-
&a4
110+
&a2
94111
- users.delete
95112
tags:
96113
- user
@@ -105,7 +122,7 @@ paths:
105122
tags:
106123
- user
107124
requestBody:
108-
description: postRequestBody
125+
description: ""
109126
content:
110127
application/json:
111128
schema:
@@ -121,5 +138,5 @@ paths:
121138
- $ref: "#/components/parameters/UserId"
122139
security:
123140
- HttpBearerJwtScheme: []
124-
- HttpBearerJwtScheme: *a4
141+
- HttpBearerJwtScheme: *a2
125142
- {}

0 commit comments

Comments
 (0)