Skip to content

Commit 5f64c90

Browse files
committed
update OpenAPI schema and convert to JSON schema
1 parent aeb1320 commit 5f64c90

File tree

4 files changed

+431
-120
lines changed

4 files changed

+431
-120
lines changed

providers/openapi/schema/convert.go

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,28 +27,38 @@ func (c *JsonSchemaConverter) Convert(s *Schema) *schema.Schema {
2727
}
2828

2929
js := &schema.Schema{
30-
Type: s.Type,
31-
Schema: s.Schema,
32-
Enum: s.Enum,
33-
Const: s.Const,
34-
Default: s.Default,
35-
MinLength: s.MinLength,
36-
MaxLength: s.MaxLength,
37-
Pattern: s.Pattern,
38-
Format: s.Format,
39-
MultipleOf: s.MultipleOf,
40-
Items: c.ConvertToJsonRef(s.Items),
41-
MinItems: s.MinItems,
42-
MaxItems: s.MaxItems,
43-
UniqueItems: s.UniqueItems,
44-
ShuffleItems: s.ShuffleItems,
45-
MaxProperties: s.MaxProperties,
46-
MinProperties: s.MinProperties,
47-
Required: s.Required,
48-
DependentRequired: nil,
49-
Title: s.Title,
50-
Description: s.Description,
51-
Deprecated: s.Deprecated,
30+
Type: s.Type,
31+
Schema: s.Schema,
32+
Enum: s.Enum,
33+
Const: s.Const,
34+
Default: s.Default,
35+
MinLength: s.MinLength,
36+
MaxLength: s.MaxLength,
37+
Pattern: s.Pattern,
38+
Format: s.Format,
39+
MultipleOf: s.MultipleOf,
40+
Items: c.ConvertToJsonRef(s.Items),
41+
UnevaluatedItems: c.ConvertToJsonRef(s.UnevaluatedItems),
42+
Contains: c.ConvertToJsonRef(s.Contains),
43+
MaxContains: s.MaxContains,
44+
MinContains: s.MinContains,
45+
MinItems: s.MinItems,
46+
MaxItems: s.MaxItems,
47+
UniqueItems: s.UniqueItems,
48+
ShuffleItems: s.ShuffleItems,
49+
MaxProperties: s.MaxProperties,
50+
MinProperties: s.MinProperties,
51+
Required: s.Required,
52+
DependentRequired: s.DependentRequired,
53+
UnevaluatedProperties: c.ConvertToJsonRef(s.UnevaluatedProperties),
54+
PropertyNames: c.ConvertToJsonRef(s.PropertyNames),
55+
Not: c.ConvertToJsonRef(s.Not),
56+
If: c.ConvertToJsonRef(s.If),
57+
Then: c.ConvertToJsonRef(s.Then),
58+
Else: c.ConvertToJsonRef(s.Else),
59+
Title: s.Title,
60+
Description: s.Description,
61+
Deprecated: s.Deprecated,
5262
}
5363
c.history[s] = js
5464

@@ -58,6 +68,10 @@ func (c *JsonSchemaConverter) Convert(s *Schema) *schema.Schema {
5868
js.Maximum = s.Maximum
5969
js.ExclusiveMaximum = s.ExclusiveMaximum
6070

71+
for _, ref := range s.PrefixItems {
72+
js.PrefixItems = append(js.PrefixItems, c.ConvertToJsonRef(ref))
73+
}
74+
6175
if s.Properties != nil {
6276
js.Properties = &schema.Schemas{}
6377
for it := s.Properties.Iter(); it.Next(); {
@@ -70,6 +84,20 @@ func (c *JsonSchemaConverter) Convert(s *Schema) *schema.Schema {
7084
}
7185
}
7286

87+
for k, ref := range s.PatternProperties {
88+
if js.PatternProperties == nil {
89+
js.PatternProperties = map[string]*schema.Ref{}
90+
}
91+
js.PatternProperties[k] = c.ConvertToJsonRef(ref)
92+
}
93+
94+
for k, ref := range s.DependentSchemas {
95+
if js.DependentSchemas == nil {
96+
js.DependentSchemas = map[string]*schema.Ref{}
97+
}
98+
js.DependentSchemas[k] = c.ConvertToJsonRef(ref)
99+
}
100+
73101
if s.AdditionalProperties != nil {
74102
js.AdditionalProperties = c.ConvertToJsonRef(s.AdditionalProperties)
75103
}

0 commit comments

Comments
 (0)