forked from loafle/openapi-generator-original
* [go-experimental] export required fields without pointer, only omitempty if type is not required and not nullable * fix: go-experimental sample code * fix: export nullable field as pointer * update samples * feat: nullable types * add getter/setter for required fields, improve docstring
244 lines
5.6 KiB
Go
244 lines
5.6 KiB
Go
/*
|
|
* OpenAPI Petstore
|
|
*
|
|
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
|
|
*
|
|
* API version: 1.0.0
|
|
* Generated by: OpenAPI Generator (https://openapi-generator.tech)
|
|
*/
|
|
|
|
package petstore
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
var ErrInvalidNullable = errors.New("nullable cannot have non-zero Value and ExplicitNull simultaneously")
|
|
|
|
// PtrBool is a helper routine that returns a pointer to given integer value.
|
|
func PtrBool(v bool) *bool { return &v }
|
|
|
|
// PtrInt is a helper routine that returns a pointer to given integer value.
|
|
func PtrInt(v int) *int { return &v }
|
|
|
|
// PtrInt32 is a helper routine that returns a pointer to given integer value.
|
|
func PtrInt32(v int32) *int32 { return &v }
|
|
|
|
// PtrInt64 is a helper routine that returns a pointer to given integer value.
|
|
func PtrInt64(v int64) *int64 { return &v }
|
|
|
|
// PtrFloat32 is a helper routine that returns a pointer to given float value.
|
|
func PtrFloat32(v float32) *float32 { return &v }
|
|
|
|
// PtrFloat64 is a helper routine that returns a pointer to given float value.
|
|
func PtrFloat64(v float64) *float64 { return &v }
|
|
|
|
// PtrString is a helper routine that returns a pointer to given string value.
|
|
func PtrString(v string) *string { return &v }
|
|
|
|
// PtrTime is helper routine that returns a pointer to given Time value.
|
|
func PtrTime(v time.Time) *time.Time { return &v }
|
|
|
|
type NullableBool struct {
|
|
Value bool
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableBool) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value:
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
func (v *NullableBool) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableInt struct {
|
|
Value int
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableInt) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value != 0:
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
|
|
func (v *NullableInt) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableInt32 struct {
|
|
Value int32
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableInt32) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value != 0:
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
func (v *NullableInt32) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableInt64 struct {
|
|
Value int64
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableInt64) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value != 0:
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
func (v *NullableInt64) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableFloat32 struct {
|
|
Value float32
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableFloat32) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value != 0.0:
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
func (v *NullableFloat32) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableFloat64 struct {
|
|
Value float64
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableFloat64) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value != 0.0:
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
func (v *NullableFloat64) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableString struct {
|
|
Value string
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableString) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && v.Value != "":
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return json.Marshal(v.Value)
|
|
}
|
|
}
|
|
|
|
func (v *NullableString) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
}
|
|
|
|
type NullableTime struct {
|
|
Value time.Time
|
|
ExplicitNull bool
|
|
}
|
|
|
|
func (v NullableTime) MarshalJSON() ([]byte, error) {
|
|
switch {
|
|
case v.ExplicitNull && !v.Value.IsZero():
|
|
return nil, ErrInvalidNullable
|
|
case v.ExplicitNull:
|
|
return []byte("null"), nil
|
|
default:
|
|
return v.Value.MarshalJSON()
|
|
}
|
|
}
|
|
|
|
func (v *NullableTime) UnmarshalJSON(src []byte) error {
|
|
if bytes.Equal(src, []byte("null")) {
|
|
v.ExplicitNull = true
|
|
return nil
|
|
}
|
|
|
|
return json.Unmarshal(src, &v.Value)
|
|
} |