null

package module
v7.0.1+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2018 License: BSD-2-Clause Imports: 14 Imported by: 0

README

null GoDoc Coverage

import "gopkg.in/axiomzen/null.v3"

null is a library with reasonable options for dealing with nullable SQL and JSON values

There are two packages: null and its subpackage zero.

Types in null will only be considered null on null input, and will JSON encode to null. If you need zero and null be considered separate values, use these.

Types in zero are treated like zero values in Go: blank string input will produce a null zero.String, and null Strings will JSON encode to "". Zero values of these types will be considered null to SQL. If you need zero and null treated the same, use these.

All types implement sql.Scanner and driver.Valuer, so you can use this library in place of sql.NullXXX. All types also implement: encoding.TextMarshaler, encoding.TextUnmarshaler, json.Marshaler, json.Unmarshaler, xml.MarshalXML, xml.UnmarshalXML, bson.GetBSON, and bson.SetBSON.

null package

import "gopkg.in/axiomzen/null.v3"

null.String

Nullable string.

Marshals to JSON null if SQL source data is null. Zero (blank) input will not produce a null String. Can unmarshal from sql.NullString JSON input or string input.

null.Int

Nullable int64.

Marshals to JSON null if SQL source data is null. Zero input will not produce a null Int. Can unmarshal from sql.NullInt64 JSON input.

null.Float

Nullable float64.

Marshals to JSON null if SQL source data is null. Zero input will not produce a null Float. Can unmarshal from sql.NullFloat64 JSON input.

null.Bool

Nullable bool.

Marshals to JSON null if SQL source data is null. False input will not produce a null Bool. Can unmarshal from sql.NullBool JSON input.

null.Time

Marshals to JSON null if SQL source data is null. Uses time.Time's marshaler. Can unmarshal from pq.NullTime and similar JSON input.

zero package

import "gopkg.in/axiomzen/null.v3/zero"

zero.String

Nullable string.

Will marshal to a blank string if null. Blank string input produces a null String. Null values and zero values are considered equivalent. Can unmarshal from sql.NullString JSON input.

zero.Int

Nullable int64.

Will marshal to 0 if null. 0 produces a null Int. Null values and zero values are considered equivalent. Can unmarshal from sql.NullInt64 JSON input.

zero.Float

Nullable float64.

Will marshal to 0 if null. 0.0 produces a null Float. Null values and zero values are considered equivalent. Can unmarshal from sql.NullFloat64 JSON input.

zero.Bool

Nullable bool.

Will marshal to false if null. false produces a null Float. Null values and zero values are considered equivalent. Can unmarshal from sql.NullBool JSON input.

zero.Time

Will marshal to the zero time if null. Uses time.Time's marshaler. Can unmarshal from pq.NullTime and similar JSON input.

Bugs

json's ",omitempty" struct tag does not work correctly right now. It will never omit a null or empty String. This might be fixed eventually.

License

BSD

Documentation

Overview

Package null contains SQL types that consider zero input and null input as separate values, with convenient support for JSON and text marshaling. Types in this package will always encode to their null value if null. Use the zero subpackage if you want zero values and null to be treated the same.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsEmptyString

func IsEmptyString(n String) bool

IsEmptyString useful for when the value needs to be check for zero

Types

type Bool

type Bool struct {
	sql.NullBool
}

Bool is a nullable bool. It does not consider false values to be null. It will decode to null, not false, if null.

func BoolFrom

func BoolFrom(b bool) Bool

BoolFrom creates a new Bool that will always be valid.

func BoolFromPtr

func BoolFromPtr(b *bool) Bool

BoolFromPtr creates a new Bool that will be null if f is nil.

func NewBool

func NewBool(b bool, valid bool) Bool

NewBool creates a new Bool

func (Bool) GetBSON

func (b Bool) GetBSON() (interface{}, error)

GetBSON implements bson.Getter.

func (Bool) GetValue

func (b Bool) GetValue() reflect.Value

GetValue implements the compare.Valuable interface

func (Bool) IsZero

func (b Bool) IsZero() bool

IsZero returns true for invalid Bools, for future omitempty support (Go 1.4?) A non-null Bool with a 0 value will not be considered zero.

func (*Bool) LoremDecode

func (b *Bool) LoremDecode(tag, example string) error

LoremDecode implements lorem.Decoder

func (Bool) MarshalJSON

func (b Bool) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this Bool is null.

func (Bool) MarshalText

func (b Bool) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler. It will encode a blank string if this Bool is null.

func (Bool) MarshalXML

func (b Bool) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface

func (Bool) Ptr

func (b Bool) Ptr() *bool

Ptr returns a pointer to this Bool's value, or a nil pointer if this Bool is null.

func (*Bool) SetBSON

func (b *Bool) SetBSON(raw bson.Raw) error

SetBSON implements bson.Setter.

func (*Bool) SetValid

func (b *Bool) SetValid(v bool)

SetValid changes this Bool's value and also sets it to be non-null.

func (*Bool) UnmarshalJSON

func (b *Bool) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will not be considered a null Bool. It also supports unmarshalling a sql.NullBool.

func (*Bool) UnmarshalText

func (b *Bool) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler. It will unmarshal to a null Bool if the input is a blank or not an integer. It will return an error if the input is not an integer, blank, or "null".

func (*Bool) UnmarshalXML

func (b *Bool) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implments the xml.Unmarshaler interface

type Float

type Float struct {
	sql.NullFloat64
}

Float is a nullable float64. It does not consider zero values to be null. It will decode to null, not zero, if null.

func FloatFrom

func FloatFrom(f float64) Float

FloatFrom creates a new Float that will always be valid.

func FloatFromPtr

func FloatFromPtr(f *float64) Float

FloatFromPtr creates a new Float that be null if f is nil.

func NewFloat

func NewFloat(f float64, valid bool) Float

NewFloat creates a new Float

func (Float) GetBSON

func (f Float) GetBSON() (interface{}, error)

GetBSON implements bson.Getter.

func (Float) GetValue

func (f Float) GetValue() reflect.Value

GetValue implements the compare.Valuable interface

func (Float) IsZero

func (f Float) IsZero() bool

IsZero returns true for invalid Floats, for future omitempty support (Go 1.4?) A non-null Float with a 0 value will not be considered zero.

func (*Float) LoremDecode

func (f *Float) LoremDecode(tag, example string) error

LoremDecode implements lorem.Decoder

func (Float) MarshalJSON

func (f Float) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this Float is null.

func (Float) MarshalText

func (f Float) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler. It will encode a blank string if this Float is null.

func (Float) MarshalXML

func (f Float) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface

func (Float) Ptr

func (f Float) Ptr() *float64

Ptr returns a pointer to this Float's value, or a nil pointer if this Float is null.

func (*Float) SetBSON

func (f *Float) SetBSON(raw bson.Raw) error

SetBSON implements bson.Setter.

func (*Float) SetValid

func (f *Float) SetValid(n float64)

SetValid changes this Float's value and also sets it to be non-null.

func (*Float) UnmarshalJSON

func (f *Float) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will not be considered a null Float. It also supports unmarshalling a sql.NullFloat64.

func (*Float) UnmarshalText

func (f *Float) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler. It will unmarshal to a null Float if the input is a blank or not an integer. It will return an error if the input is not an integer, blank, or "null".

func (*Float) UnmarshalXML

func (f *Float) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implments the xml.Unmarshaler interface

type Int32

type Int32 struct {
	sql.NullInt32
}

Int32 is an nullable int32. It does not consider zero values to be null. It will decode to null, not zero, if null.

func Int32From

func Int32From(i int32) Int32

Int32From creates a new Int32 that will always be valid.

func Int32FromPtr

func Int32FromPtr(i *int32) Int32

Int32FromPtr creates a new Int32 that be null if i is nil.

func NewInt32

func NewInt32(i int32, valid bool) Int32

NewInt32 creates a new Int32

func (Int32) GetBSON

func (i Int32) GetBSON() (interface{}, error)

GetBSON implements bson.Getter.

func (Int32) GetValue

func (i Int32) GetValue() reflect.Value

GetValue implements the compare.Valuable interface

func (Int32) IsZero

func (i Int32) IsZero() bool

IsZero returns true for invalid Ints, for future omitempty support (Go 1.4?) A non-null Int32 with a 0 value will not be considered zero.

func (*Int32) LoremDecode

func (i *Int32) LoremDecode(tag, example string) error

LoremDecode implements lorem.Decoder

func (Int32) MarshalJSON

func (i Int32) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this Int32 is null.

func (Int32) MarshalText

func (i Int32) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler. It will encode a blank string if this Int32 is null.

func (Int32) MarshalXML

func (i Int32) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface

func (Int32) Ptr

func (i Int32) Ptr() *int32

Ptr returns a pointer to this Int32's value, or a nil pointer if this Int32 is null.

func (*Int32) SetBSON

func (i *Int32) SetBSON(raw bson.Raw) error

SetBSON implements bson.Setter.

func (*Int32) SetValid

func (i *Int32) SetValid(n int32)

SetValid changes this Int32's value and also sets it to be non-null.

func (*Int32) UnmarshalJSON

func (i *Int32) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will not be considered a null Int32. It also supports unmarshalling a sql.NullInt32.

func (*Int32) UnmarshalText

func (i *Int32) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler. It will unmarshal to a null Int32 if the input is a blank or not an integer. It will return an error if the input is not an integer, blank, or "null".

func (*Int32) UnmarshalXML

func (i *Int32) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implments the xml.Unmarshaler interface

type Int64

type Int64 struct {
	sql.NullInt64
}

Int64 is an nullable int64. It does not consider zero values to be null. It will decode to null, not zero, if null.

func Int64From

func Int64From(i int64) Int64

Int64From creates a new Int64 that will always be valid.

func Int64FromPtr

func Int64FromPtr(i *int64) Int64

Int64FromPtr creates a new Int64 that be null if i is nil.

func NewInt64

func NewInt64(i int64, valid bool) Int64

NewInt64 creates a new Int64

func (Int64) GetBSON

func (i Int64) GetBSON() (interface{}, error)

GetBSON implements bson.Getter.

func (Int64) GetValue

func (i Int64) GetValue() reflect.Value

GetValue implements the compare.Valuable interface

func (Int64) IsZero

func (i Int64) IsZero() bool

IsZero returns true for invalid Ints, for future omitempty support (Go 1.4?) A non-null Int64 with a 0 value will not be considered zero.

func (*Int64) LoremDecode

func (i *Int64) LoremDecode(tag, example string) error

LoremDecode implements lorem.Decoder

func (Int64) MarshalJSON

func (i Int64) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this Int64 is null.

func (Int64) MarshalText

func (i Int64) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler. It will encode a blank string if this Int64 is null.

func (Int64) MarshalXML

func (i Int64) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface

func (Int64) Ptr

func (i Int64) Ptr() *int64

Ptr returns a pointer to this Int64's value, or a nil pointer if this Int64 is null.

func (*Int64) SetBSON

func (i *Int64) SetBSON(raw bson.Raw) error

SetBSON implements bson.Setter.

func (*Int64) SetValid

func (i *Int64) SetValid(n int64)

SetValid changes this Int64's value and also sets it to be non-null.

func (*Int64) UnmarshalJSON

func (i *Int64) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will not be considered a null Int64. It also supports unmarshalling a sql.NullInt64.

func (*Int64) UnmarshalText

func (i *Int64) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler. It will unmarshal to a null Int64 if the input is a blank or not an integer. It will return an error if the input is not an integer, blank, or "null".

func (*Int64) UnmarshalXML

func (i *Int64) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implments the xml.Unmarshaler interface

type String

type String struct {
	sql.NullString
}

String is a nullable string. It supports SQL and JSON serialization. It will marshal to null if null. Blank string input will be considered null.

func NewString

func NewString(s string, valid bool) String

NewString creates a new String

func StringFrom

func StringFrom(s string) String

StringFrom creates a new String that will never be blank.

func StringFromPtr

func StringFromPtr(s *string) String

StringFromPtr creates a new String that be null if s is nil.

func (String) GetBSON

func (s String) GetBSON() (interface{}, error)

GetBSON implements bson.Getter.

func (String) GetValue

func (s String) GetValue() reflect.Value

GetValue implements the compare.Valuable interface

func (String) IsZero

func (s String) IsZero() bool

IsZero returns true for null strings, for potential future omitempty support.

func (*String) LoremDecode

func (s *String) LoremDecode(tag, example string) error

LoremDecode implements lorem.Decoder

func (String) MarshalJSON

func (s String) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this String is null.

func (String) MarshalText

func (s String) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler. It will encode a blank string when this String is null.

func (String) MarshalXML

func (s String) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface

func (String) Ptr

func (s String) Ptr() *string

Ptr returns a pointer to this String's value, or a nil pointer if this String is null.

func (*String) SetBSON

func (s *String) SetBSON(raw bson.Raw) error

SetBSON implements bson.Setter.

func (*String) SetValid

func (s *String) SetValid(v string)

SetValid changes this String's value and also sets it to be non-null.

func (*String) UnmarshalJSON

func (s *String) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports string and null input. Blank string input does not produce a null String. It also supports unmarshalling a sql.NullString.

func (*String) UnmarshalText

func (s *String) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler. It will unmarshal to a null String if the input is a blank string.

func (*String) UnmarshalXML

func (s *String) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implments the xml.Unmarshaler interface

type Time

type Time struct {
	Time  time.Time
	Valid bool
}

Time is a nullable time.Time. It supports SQL and JSON serialization. It will marshal to null if null.

func NewTime

func NewTime(t time.Time, valid bool) Time

NewTime creates a new Time.

func TimeFrom

func TimeFrom(t time.Time) Time

TimeFrom creates a new Time that will always be valid.

func TimeFromPtr

func TimeFromPtr(t *time.Time) Time

TimeFromPtr creates a new Time that will be null if t is nil.

func (Time) AppendValue

func (t Time) AppendValue(b []byte, quote int) ([]byte, error)

AppendValue implements the types.ValueAppender interface

func (Time) GetBSON

func (t Time) GetBSON() (interface{}, error)

GetBSON implements bson.Getter.

func (Time) GetValue

func (t Time) GetValue() reflect.Value

GetValue implements the compare.Valuable interface

func (Time) IsZero

func (t Time) IsZero() bool

IsZero implements the orm.isZeroer interface

func (*Time) LoremDecode

func (t *Time) LoremDecode(tag, example string) error

LoremDecode implements lorem.Decoder

func (Time) MarshalJSON

func (t Time) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this time is null.

func (Time) MarshalText

func (t Time) MarshalText() ([]byte, error)

MarshalText implements the encoding.TextMarshaler interface.

func (Time) MarshalXML

func (t Time) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML implements the xml.Marshaler interface

func (Time) Ptr

func (t Time) Ptr() *time.Time

Ptr returns a pointer to this Time's value, or a nil pointer if this Time is null.

func (*Time) Scan

func (t *Time) Scan(value interface{}) error

Scan implements the sql.Scanner interface.

func (*Time) SetBSON

func (t *Time) SetBSON(raw bson.Raw) error

SetBSON implements bson.Setter.

func (*Time) SetValid

func (t *Time) SetValid(v time.Time)

SetValid changes this Time's value and sets it to be non-null.

func (*Time) UnmarshalJSON

func (t *Time) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports string, object (e.g. pq.NullTime and friends) and null input.

func (*Time) UnmarshalText

func (t *Time) UnmarshalText(text []byte) error

UnmarshalText implements the encoding.TextUnmarshaler interface.

func (*Time) UnmarshalXML

func (t *Time) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implments the xml.Unmarshaler interface

func (Time) Value

func (t Time) Value() (driver.Value, error)

Value implements the driver Valuer interface.

Directories

Path Synopsis
Package zero contains SQL types that consider zero input and null input to be equivalent with convenient support for JSON and text marshaling.
Package zero contains SQL types that consider zero input and null input to be equivalent with convenient support for JSON and text marshaling.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL