| {{/* | |
| Custom "schema" template for Moby; it disables generating marshaling | |
| and validation code, and contains a fix for CamelCase (IPv6 <--> IPV6). | |
| The orignal template can be found at: | |
| https://github.com/go-swagger/go-swagger/blob/v0.33.1/generator/templates/schema.gotmpl | |
| */}} | |
| {{- if and .IsBaseType .IsExported (not .IsSuperAlias) }} | |
| {{- template "schemaPolymorphic" . }} | |
| {{- else if .IsSuperAlias }} | |
| type {{ pascalize .Name }} {{ template "typeSchemaType" . }}{{/* For types declared as $ref on some other type, just declare the type as a golang _aliased_ type, e.g. type A = B. No method shall be redeclared. */}} | |
| {{- if .IsBaseType }} | |
| {{ template "baseTypeSerializer" . }}{{/* When the alias redeclares a polymorphic type, define factory methods with this alias. */}} | |
| {{- end }} | |
| {{- else if .IsEmbedded }} | |
| {{- template "schemaEmbedded" . }} | |
| {{- else }} | |
| {{- if or .IsComplexObject .IsTuple .IsAdditionalProperties }}{{/* TODO(fred): handle case of subtype inheriting from base type with AdditionalProperties, issue #2220 */}} | |
| {{ if .Name }}type {{ if not .IsExported }}{{ .Name }}{{ else }}{{ pascalize .Name }}{{ end }}{{ end }} {{ template "schemaBody" . }} | |
| {{- range .Properties }} | |
| {{- if .IsBaseType }} | |
| // {{ pascalize .Name}} gets the {{ humanize .Name }} of this base type{{/* all properties which are of a base type propagate its interface */}} | |
| func ({{ $.ReceiverName}} *{{ pascalize $.Name}}) {{ pascalize .Name}}() {{ template "schemaType" . }}{ | |
| {{- if eq $.DiscriminatorField .Name }} | |
| return {{ printf "%q" $.DiscriminatorValue }} | |
| {{- else }} | |
| return {{ $.ReceiverName }}.{{camelize .Name}}Field | |
| {{- end }} | |
| } | |
| // Set{{ pascalize .Name}} sets the {{ humanize .Name }} of this base type | |
| func ({{ $.ReceiverName}} *{{ pascalize $.Name}}) Set{{ pascalize .Name}}(val {{ template "schemaType" . }}) { | |
| {{- if ne $.DiscriminatorField .Name }} | |
| {{ $.ReceiverName }}.{{camelize .Name}}Field = val | |
| {{- end }} | |
| } | |
| {{- end }} | |
| {{- end }} | |
| {{- if .Default }}{{/* TODO(fred) - issue #2189 */}} | |
| func ({{.ReceiverName}} *{{ pascalize .Name }}) UnmarshalJSON(b []byte) error { | |
| type {{ pascalize .Name }}Alias {{ pascalize .Name }} | |
| var t {{ pascalize .Name }}Alias | |
| if err := json.Unmarshal([]byte({{printf "%q" (json .Default)}}), &t); err != nil { | |
| return err | |
| } | |
| if err := json.Unmarshal(b, &t); err != nil { | |
| return err | |
| } | |
| *{{.ReceiverName}} = {{ pascalize .Name }}(t) | |
| return nil | |
| } | |
| {{- end }} | |
| {{- else }} | |
| type {{ pascalize .Name }} {{ template "typeSchemaType" . }} | |
| {{- end }} | |
| {{- if (and .IsPrimitive .IsAliased .IsCustomFormatter (not (stringContains .Zero "(\""))) }} | |
| {{ template "aliasedSerializer" . }} | |
| {{- end }} | |
| {{- if .IsSubType }} | |
| {{ range .AllOf }} | |
| {{ range .Properties }} | |
| {{- if .IsBaseType }} | |
| // {{ pascalize .Name}} gets the {{ humanize .Name }} of this subtype | |
| func ({{$.ReceiverName}} *{{ pascalize $.Name}}) {{ pascalize .Name}}() {{ template "schemaType" . }}{ | |
| {{- if eq $.DiscriminatorField .Name }} | |
| return {{ printf "%q" $.DiscriminatorValue }} | |
| {{- else }} | |
| return {{ $.ReceiverName }}.{{camelize .Name}}Field | |
| {{- end }} | |
| } | |
| // Set{{ pascalize .Name}} sets the {{ humanize .Name }} of this subtype | |
| func ({{$.ReceiverName}} *{{ pascalize $.Name}}) Set{{ pascalize .Name}}(val {{ template "schemaType" . }}) { | |
| {{- if ne $.DiscriminatorField .Name }} | |
| {{ $.ReceiverName }}.{{camelize .Name}}Field = val | |
| {{- end }} | |
| } | |
| {{- end }} | |
| {{- end }}{{/* TODO(fred): handle AdditionalProperties in base type */}} | |
| {{- end }} | |
| {{ template "mapOrSliceGetter" . }} | |
| {{- end }} | |
| {{/* {{ template "schemaSerializer" . }} */}}{{/* TODO(moby): Disabled for moby/api */}} | |
| {{- end }} | |
| {{- if and .IncludeValidator (not .IsSuperAlias) (not .IsEmbedded) }}{{/* aliased types type A = B do not redefine methods */}} | |
| {{- if and (not (or .IsInterface .IsStream)) (or .Required .HasValidations .HasBaseType) }} | |
| {{- if (eq .SwaggerType "string") }}{{/* Enum factory for enums for which we generate const (atm, only strings)*/}} | |
| {{- if .Enum }} | |
| func New{{ pascalize .Name }}(value {{ .GoType }}) *{{ .GoType }} { | |
| return &value | |
| } | |
| // Pointer returns a pointer to a freshly-allocated {{ .GoType }}. | |
| func ({{ .ReceiverName }} {{ .GoType }}) Pointer() *{{ .GoType }} { | |
| return &{{ .ReceiverName }} | |
| } | |
| {{- end }} | |
| {{- end }} | |
| {{/* {{ template "schemavalidator" . }} */}}{{/* TODO(moby): Disabled for moby/api */}} | |
| {{- else if and false not (or .IsInterface .IsStream) }}{{/* TODO(moby): Disabled for moby/api */}} | |
| // Validate validates this {{ humanize .Name }}{{/* this schema implements the runtime.Validatable interface but has no validations to check */}} | |
| func ({{.ReceiverName}} {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ if or (not .IsExported) .Discriminates }}{{ camelize .Name }}{{ else }}{{ pascalize .Name }}{{ end }}) Validate(formats strfmt.Registry) error { | |
| return nil | |
| } | |
| {{- else }}{{/* {{ .Name }} does not implement the runtime.Validatable interface: noop */}} | |
| {{- end }} | |
| {{- if false }}{{/* TODO(moby): Disabled for moby/api */}} | |
| {{- if and (not (or .IsInterface .IsStream)) (or .HasContextValidations) }} | |
| {{ template "schemacontextvalidator" . }} | |
| {{- else if not (or .IsInterface .IsStream) }} | |
| // ContextValidate validates this {{ humanize .Name }} based on context it is used {{/* this schema implements the runtime.ContextValidatable interface but has no validations to check */}} | |
| func ({{.ReceiverName}} {{ if or .IsTuple .IsComplexObject .IsAdditionalProperties }}*{{ end }}{{ if or (not .IsExported) .Discriminates }}{{ camelize .Name }}{{ else }}{{ pascalize .Name }}{{ end }}) ContextValidate(ctx context.Context, formats strfmt.Registry) error { | |
| return nil | |
| } | |
| {{- else }}{{/* {{ .Name }} does not implement the runtime.Validatable interface: noop */}} | |
| {{- end }} | |
| {{- end }} | |
| {{- if .WantsMarshalBinary }} | |
| {{/* {{ template "marshalBinarySerializer" . }} */}}{{/* TODO(moby): Disabled for moby/api */}} | |
| {{- end }}{{/* TODO(moby): Disabled for moby/api */}} | |
| {{- end }} | |
| {{- define "mapOrSliceGetter" }}{{/* signature for AdditionalProperties and AdditionalItems getter funcs */}} | |
| {{- if not .IsBaseType }} | |
| {{- if .HasAdditionalProperties }} | |
| {{- with .AdditionalProperties }} | |
| // {{- template "docstring" . }}{{- template "propertyValidationDocString" . }} | |
| {{ pascalize .Name }}() map[string]{{ template "schemaType" . }} | |
| {{- end }} | |
| {{- end }} | |
| {{- with .AdditionalItems }} | |
| // {{- template "docstring" . }}{{- template "propertyValidationDocString" . }} | |
| {{ pascalize .Name }}() []{{ template "schemaType" . }} | |
| {{- end }} | |
| {{- else }} | |
| // AdditionalProperties in base type shoud be handled just like regular properties{{/* TODO(fred): add full support for AdditionalProperties in base type */}} | |
| // At this moment, the base type property is pushed down to the subtype | |
| {{- end }} | |
| {{- end }} |