Documentation ¶
Index ¶
Constants ¶
View Source
const DefaultPackageName = "openapi"
DefaultPackageName used in the models source code
View Source
const ExtensionPatternError = "x-pattern-error"
ExtensionPatternError is an extension property that, if set, allows the API author to control the error message for pattern validation failures.
Variables ¶
View Source
var DerivedRulesByValidationType = load()
Functions ¶
This section is empty.
Types ¶
type ConvertSpec ¶
type ConvertSpec struct { // TargetGoType is the target type of the conversion TargetGoType string // IsPtr is true when the target type is a pointer IsPtr bool }
ConvertSpec holds all info to build one As{Type}() function
type DerivedRule ¶ added in v2.1.1
type DerivedRule struct { //Type related IsStruct bool `json:"struct,omitempty"` IsArray bool `json:"array,omitempty"` IsMap bool `json:"map,omitempty"` IsNumber bool `json:"number,omitempty"` IsInteger bool `json:"integer,omitempty"` IsString bool `json:"string,omitempty"` IsEnum bool `json:"enum,omitempty"` IsEnumWithNull *bool `json:"enum_with_null,omitempty"` IsEnumWithZero *bool `json:"enum_with_zero,omitempty"` IsPtr bool `json:"ptr,omitempty"` // Format related HasFormat *bool `json:"format,omitempty"` HasPattern *bool `json:"pattern,omitempty"` // Validation related IsRequired *bool `json:"required,omitempty"` HasMin *bool `json:"min,omitempty"` HasMax *bool `json:"max,omitempty"` IsMinGreaterThanZero *bool `json:"min_gt_zero,omitempty"` IsMaxLessThanZero *bool `json:"max_lt_zero,omitempty"` HasMinLength *bool `json:"min_length,omitempty"` HasMaxLength *bool `json:"max_length,omitempty"` HasMinItems *bool `json:"min_items,omitempty"` HasMaxItems *bool `json:"max_items,omitempty"` IsUniqueItems *bool `json:"unique_items,omitempty"` HasMinProps *bool `json:"min_props,omitempty"` HasMaxProps *bool `json:"max_props,omitempty"` }
func (*DerivedRule) MakeConsistent ¶ added in v2.1.1
func (v *DerivedRule) MakeConsistent()
type Discriminator ¶
type Generator ¶
type Generator interface { // Generate generates and writes model files that can be generated out of the given spec. Generate(ctx context.Context) error }
Generator defines generator operations needed for generating Go code for the spec
type Model ¶
type Model struct { // Validation stuff ValidationSpec // Name is a name of the generated type that follows the `type` keyword in the definition // For example, `type Name GoType`. Name string // Description is a description that will become a comment on the generated type Description string // Imports is a list of imports that will be present in the Go file. Key is the package and value is the alias Imports map[string]string // TemplateKind is a kind of generated model (e.g. `struct` or `enum`) TemplateKind TemplateKind // Properties is a list of type's property descriptors Properties []PropSpec // ConvertSpecs contains a list of convert functions for this model ConvertSpecs []ConvertSpec // Discriminator contains the optional oneOf discriminator Discriminator Discriminator // GoType is a string that represents the Go type that follows the model type name. // For example, `type Name GoType`. GoType string // SpecTitle is the spec title used in the auto-generated header SpecTitle string // SpecVersion is the spec version used in the auto-generated header SpecVersion string // PackageName is the name of the package used in the Go code PackageName string // AdditionalPropertiesGoType is the optional type of additional properties // that exist _in addition_ to `Properties` AdditionalPropertiesGoType string }
Model is a template model for rendering Go code for a given API schema
func NewModelFromParameters ¶
func NewModelFromParameters(params openapi3.Parameters) (model *Model, err error)
NewModelFromParameters returns a model built from operation parameters
func NewModelFromRef ¶
NewModelFromRef creates a model out of a schema
type Options ¶
type Options struct { // PackageName of the generated models source code (`DefaultPackageName` by default) PackageName string // Destination is a path to a folder where create all the Go files Destination string // Logger instance to use for messaging Logger zerolog.Logger }
Options represent all the possible options of the generator
type PropSpec ¶
type PropSpec struct { // Validation stuff ValidationSpec // Name is a property name in structs, variable name in enums, etc Name string // PropertyName is the original name of the property PropertyName string // Description used in the comment of the property Description string // GoType used for this property (e.g. `string`, `int`, etc) GoType string // JSONTags is a string of JSON tags used for marshaling (e.g. `json:omitempty`) JSONTags string // Value is a value used for a enum item Value string // IsRequired is true when the property is a required value and should not be omitted on marshaling IsRequired bool // IsPtr is true when the property is a pointer. This is derived from the nullable property in the schema IsPtr bool // IsEnum is true when the property is a enum item IsEnum bool // IsOneOf is true when the property is a `oneof` schema IsOneOf bool // IsArray is true when the property is an array IsArray bool // IsMap is true when the property is a map IsMap bool // IsStruct is true when the property is a struct IsStruct bool // IsString is true when the property is a string IsString bool // IsNumber is true when the property is a number IsNumber bool // IsInteger is true when the property is an integer IsInteger bool // IsRef is true when the property is a Ref to a schema IsRef bool }
PropSpec is a Go property descriptor
type TemplateKind ¶ added in v2.1.1
type TemplateKind string
TemplateKind is a kind of template to render
const ( // Struct is a regular Go struct Struct TemplateKind = "struct" // Enum is a Go enum definition Enum TemplateKind = "enum" // Value is a value type Value TemplateKind = "value" // OneOf is a oneof value OneOf TemplateKind = "oneof" )
type ValidationSpec ¶ added in v2.1.0
type ValidationSpec struct { // Validation stuff HasPattern bool Pattern string PatternErrorMsg string NeedsValidation bool HasMin, HasMax bool Min, Max float64 HasMinLength, HasMaxLength bool MinLength, MaxLength uint64 HasMinItems, HasMaxItems bool MinItems, MaxItems uint64 HasMinProps, HasMaxProps bool MinProps, MaxProps uint64 HasFormat bool IsDate bool IsDateTime bool IsBase64 bool IsEmail bool IsUUID bool IsURL bool IsURI bool IsRequestURI bool IsHostname bool IsIP bool IsIPv4 bool IsIPv6 bool IsEnumWithNil bool IsEnumWithZero bool // Derived validations that should be added to the property DerivedValidations []string }
Click to show internal directories.
Click to hide internal directories.