Files
libopenapi/datamodel/high/v2/items.go
Dave Shanley c3cf5f1e38 Added support for unevaluatedProperties as Schema and bool #118
Also ran `gofmt` across the entire project. Things need cleaning up.

Signed-off-by: Dave Shanley <dave@quobix.com>
2023-06-17 14:12:27 -04:00

101 lines
2.5 KiB
Go

// Copyright 2022 Princess B33f Heavy Industries / Dave Shanley
// SPDX-License-Identifier: MIT
package v2
import (
low "github.com/pb33f/libopenapi/datamodel/low/v2"
)
// Items is a high-level representation of a Swagger / OpenAPI 2 Items object, backed by a low level one.
// Items is a limited subset of JSON-Schema's items object. It is used by parameter definitions that are not
// located in "body"
// - https://swagger.io/specification/v2/#itemsObject
type Items struct {
Type string
Format string
CollectionFormat string
Items *Items
Default any
Maximum int
ExclusiveMaximum bool
Minimum int
ExclusiveMinimum bool
MaxLength int
MinLength int
Pattern string
MaxItems int
MinItems int
UniqueItems bool
Enum []any
MultipleOf int
low *low.Items
}
// NewItems creates a new high-level Items instance from a low-level one.
func NewItems(items *low.Items) *Items {
i := new(Items)
i.low = items
if !items.Type.IsEmpty() {
i.Type = items.Type.Value
}
if !items.Format.IsEmpty() {
i.Format = items.Format.Value
}
if !items.Items.IsEmpty() {
i.Items = NewItems(items.Items.Value)
}
if !items.CollectionFormat.IsEmpty() {
i.CollectionFormat = items.CollectionFormat.Value
}
if !items.Default.IsEmpty() {
i.Default = items.Default.Value
}
if !items.Maximum.IsEmpty() {
i.Maximum = items.Maximum.Value
}
if !items.ExclusiveMaximum.IsEmpty() {
i.ExclusiveMaximum = items.ExclusiveMaximum.Value
}
if !items.Minimum.IsEmpty() {
i.Minimum = items.Minimum.Value
}
if !items.ExclusiveMinimum.IsEmpty() {
i.ExclusiveMinimum = items.ExclusiveMinimum.Value
}
if !items.MaxLength.IsEmpty() {
i.MaxLength = items.MaxLength.Value
}
if !items.MinLength.IsEmpty() {
i.MinLength = items.MinLength.Value
}
if !items.Pattern.IsEmpty() {
i.Pattern = items.Pattern.Value
}
if !items.MinItems.IsEmpty() {
i.MinItems = items.MinItems.Value
}
if !items.MaxItems.IsEmpty() {
i.MaxItems = items.MaxItems.Value
}
if !items.UniqueItems.IsEmpty() {
i.UniqueItems = items.UniqueItems.Value
}
if !items.Enum.IsEmpty() {
var enums []any
for e := range items.Enum.Value {
enums = append(enums, items.Enum.Value[e].Value)
}
i.Enum = enums
}
if !items.MultipleOf.IsEmpty() {
i.MultipleOf = items.MultipleOf.Value
}
return i
}
// GoLow returns the low-level Items object that was used to create the high-level one.
func (i *Items) GoLow() *low.Items {
return i.low
}