zero

package
v1.240302.2209 Latest Latest
Warning

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

Go to latest
Published: Mar 2, 2024 License: BSD-2-Clause Imports: 10 Imported by: 0

Documentation

Overview

Package zero contains SQL types that consider zero input and null input to be equivalent with convenient support for JSON and text marshaling. Types in this package will JSON marshal to their zero value, even if null. Use the null parent package if you don't want this.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bool

type Bool struct {
	sql.NullBool
}

Bool is a nullable bool. False input is considered null. JSON marshals to false if null. Considered null to SQL unmarshaled from a false value.

func BoolFrom

func BoolFrom(b bool) Bool

BoolFrom creates a new Bool that will be null if false.

func BoolFromPtr

func BoolFromPtr(b *bool) Bool

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

func NewBool

func NewBool(b bool, valid bool) Bool

NewBool creates a new Bool

func (Bool) Equal

func (b Bool) Equal(other Bool) bool

Equal returns true if both booleans are true and valid, or if both booleans are either false or invalid.

func (Bool) IsZero

func (b Bool) IsZero() bool

IsZero returns true for null or zero Bools, for future omitempty support (Go 1.4?)

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 zero if this Bool is null.

func (Bool) Ptr

func (b Bool) Ptr() *bool

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

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. "false" will be considered a null Bool.

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 false or blank. It will return an error if the input is not a float, blank, or "null".

func (Bool) ValueOrZero

func (b Bool) ValueOrZero() bool

ValueOrZero returns the inner value if valid, otherwise false.

type Byte

type Byte struct {
	sql.NullByte
}

Byte is a nullable byte. JSON marshals to zero if null. Considered null to SQL if zero.

func ByteFrom

func ByteFrom(i byte) Byte

ByteFrom creates a new Byte that will be null if zero.

func ByteFromPtr

func ByteFromPtr(i *byte) Byte

ByteFromPtr creates a new Byte that be null if i is nil.

func NewByte

func NewByte(i byte, valid bool) Byte

NewByte creates a new Byte

func (Byte) Equal

func (b Byte) Equal(other Byte) bool

Equal returns true if both ints have the same value or are both either null or zero.

func (Byte) IsZero

func (b Byte) IsZero() bool

IsZero returns true for null or zero Bytes, for future omitempty support (Go 1.4?)

func (Byte) MarshalJSON

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

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

func (Byte) MarshalText

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

MarshalText implements encoding.TextMarshaler. It will encode a zero if this Byte is null.

func (Byte) Ptr

func (b Byte) Ptr() *byte

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

func (*Byte) SetValid

func (b *Byte) SetValid(n byte)

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

func (*Byte) UnmarshalJSON

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

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will be considered a null Byte.

func (*Byte) UnmarshalText

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

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

func (Byte) ValueOrZero

func (b Byte) ValueOrZero() byte

ValueOrZero returns the inner value if valid, otherwise zero.

type Float

type Float struct {
	sql.NullFloat64
}

Float is a nullable float64. Zero input will be considered null. JSON marshals to zero if null. Considered null to SQL if zero.

func FloatFrom

func FloatFrom(f float64) Float

FloatFrom creates a new Float that will be null if zero.

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) Equal

func (f Float) Equal(other Float) bool

Equal returns true if both floats have the same value or are both either null or zero. Warning: calculations using floating point numbers can result in different ways the numbers are stored in memory. Therefore, this function is not suitable to compare the result of a calculation. Use this method only to check if the value has changed in comparison to some previous value.

func (Float) IsZero

func (f Float) IsZero() bool

IsZero returns true for null or zero Floats, for future omitempty support (Go 1.4?)

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 zero if this Float is null.

func (Float) Ptr

func (f Float) Ptr() *float64

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

func (*Float) SetValid

func (f *Float) SetValid(v 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 be considered a null Float.

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 blank or zero. It will return an error if the input is not a float, blank, or "null".

func (Float) ValueOrZero

func (f Float) ValueOrZero() float64

ValueOrZero returns the inner value if valid, otherwise zero.

type Int

type Int struct {
	sql.NullInt64
}

Int is a nullable int64. JSON marshals to zero if null. Considered null to SQL if zero.

func IntFrom

func IntFrom(i int64) Int

IntFrom creates a new Int that will be null if zero.

func IntFromPtr

func IntFromPtr(i *int64) Int

IntFromPtr creates a new Int that be null if i is nil.

func NewInt

func NewInt(i int64, valid bool) Int

NewInt creates a new Int

func (Int) Equal

func (i Int) Equal(other Int) bool

Equal returns true if both ints have the same value or are both either null or zero.

func (Int) IsZero

func (i Int) IsZero() bool

IsZero returns true for null or zero Ints, for future omitempty support (Go 1.4?)

func (Int) MarshalJSON

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

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

func (Int) MarshalText

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

MarshalText implements encoding.TextMarshaler. It will encode a zero if this Int is null.

func (Int) Ptr

func (i Int) Ptr() *int64

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

func (*Int) SetValid

func (i *Int) SetValid(n int64)

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

func (*Int) UnmarshalJSON

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

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will be considered a null Int.

func (*Int) UnmarshalText

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

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

func (Int) ValueOrZero

func (i Int) ValueOrZero() int64

ValueOrZero returns the inner value if valid, otherwise zero.

type Int16

type Int16 struct {
	sql.NullInt16
}

Int16 is a nullable int16. JSON marshals to zero if null. Considered null to SQL if zero.

func Int16From

func Int16From(i int16) Int16

Int16From creates a new Int16 that will be null if zero.

func Int16FromPtr

func Int16FromPtr(i *int16) Int16

Int16FromPtr creates a new Int16 that be null if i is nil.

func NewInt16

func NewInt16(i int16, valid bool) Int16

NewInt16 creates a new Int16

func (Int16) Equal

func (i Int16) Equal(other Int16) bool

Equal returns true if both ints have the same value or are both either null or zero.

func (Int16) IsZero

func (i Int16) IsZero() bool

IsZero returns true for null or zero Int16s, for future omitempty support (Go 1.4?)

func (Int16) MarshalJSON

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

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

func (Int16) MarshalText

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

MarshalText implements encoding.TextMarshaler. It will encode a zero if this Int16 is null.

func (Int16) Ptr

func (i Int16) Ptr() *int16

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

func (*Int16) SetValid

func (i *Int16) SetValid(n int16)

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

func (*Int16) UnmarshalJSON

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

UnmarshalJSON implements json.Unmarshaler. It supports number and null input. 0 will be considered a null Int16.

func (*Int16) UnmarshalText

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

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

func (Int16) ValueOrZero

func (i Int16) ValueOrZero() int16

ValueOrZero returns the inner value if valid, otherwise zero.

type Int32

type Int32 struct {
	sql.NullInt32
}

Int32 is a nullable int32. JSON marshals to zero if null. Considered null to SQL if zero.

func Int32From

func Int32From(i int32) Int32

Int32From creates a new Int32 that will be null if zero.

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) Equal

func (i Int32) Equal(other Int32) bool

Equal returns true if both ints have the same value or are both either null or zero.

func (Int32) IsZero

func (i Int32) IsZero() bool

IsZero returns true for null or zero Int32s, for future omitempty support (Go 1.4?)

func (Int32) MarshalJSON

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

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

func (Int32) MarshalText

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

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

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) 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 be considered a null Int32.

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 zero. It will return an error if the input is not an integer, blank, or "null".

func (Int32) ValueOrZero

func (i Int32) ValueOrZero() int32

ValueOrZero returns the inner value if valid, otherwise zero.

type Int64

type Int64 = Int

Int64 is an alias for Int.

type String

type String struct {
	sql.NullString
}

String is a nullable string. JSON marshals to a blank string if null. Considered null to SQL if zero.

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 be null if s is blank.

func StringFromPtr

func StringFromPtr(s *string) String

StringFromPtr creates a new String that be null if s is nil or blank. It will make s point to the String's value.

func (String) Equal

func (s String) Equal(other String) bool

Equal returns true if both strings have the same value or are both either null or empty.

func (String) IsZero

func (s String) IsZero() bool

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

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) 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) 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 produces a null String.

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) ValueOrZero

func (s String) ValueOrZero() string

ValueOrZero returns the inner value if valid, otherwise zero.

type Time

type Time struct {
	sql.NullTime
}

Time is a nullable time.Time. JSON marshals to the zero value for time.Time if null. Considered to be null to SQL if zero.

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 be null if t is the zero value.

func TimeFromPtr

func TimeFromPtr(t *time.Time) Time

TimeFromPtr creates a new Time that will be null if t is nil or *t is the zero value.

func (Time) Equal

func (t Time) Equal(other Time) bool

Equal returns true if both Time objects encode the same time or are both are either null or zero. Two times can be equal even if they are in different locations. For example, 6:00 +0200 CEST and 4:00 UTC are Equal.

func (Time) ExactEqual

func (t Time) ExactEqual(other Time) bool

ExactEqual returns true if both Time objects are equal or both are either null or zero. ExactEqual returns false for times that are in different locations or have a different monotonic clock reading.

func (Time) IsZero

func (t Time) IsZero() bool

IsZero returns true for null or zero Times, for potential future omitempty support.

func (Time) MarshalJSON

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

MarshalJSON implements json.Marshaler. It will encode the zero value of time.Time if this time is invalid.

func (Time) MarshalText

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

MarshalText implements encoding.TextMarshaler. It will encode to an empty time.Time if invalid.

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 zero.

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 and null input.

func (*Time) UnmarshalText

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

UnmarshalText implements encoding.TextUnmarshaler. It has compatibility with the null package in that it will accept empty strings as invalid values, which will be unmarshaled to an invalid zero value.

func (Time) Value

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

Value implements the driver Valuer interface.

func (Time) ValueOrZero

func (t Time) ValueOrZero() time.Time

ValueOrZero returns the inner value if valid, otherwise zero.

type Value

type Value[T comparable] struct {
	sql.Null[T]
}

func NewValue

func NewValue[T comparable](t T, valid bool) Value[T]

NewValue creates a new Value.

func ValueFrom

func ValueFrom[T comparable](t T) Value[T]

ValueFrom creates a new Value that will always be valid.

func ValueFromPtr

func ValueFromPtr[T comparable](t *T) Value[T]

ValueFromPtr creates a new Value that will be null if t is nil.

func (Value[T]) Equal

func (t Value[T]) Equal(other Value[T]) bool

Equal returns true if both Value objects encode the same value or are both null.

func (Value[T]) IsZero

func (t Value[T]) IsZero() bool

IsZero returns true for invalid or zero Values, hopefully for future omitempty support.

func (Value[T]) MarshalJSON

func (t Value[T]) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler. It will encode null if this value is null or zero.

func (Value[T]) Ptr

func (t Value[T]) Ptr() *T

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

func (*Value[T]) SetValid

func (t *Value[T]) SetValid(v T)

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

func (*Value[T]) UnmarshalJSON

func (t *Value[T]) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler. It supports string and null input.

func (Value[T]) ValueOrZero

func (t Value[T]) ValueOrZero() T

ValueOrZero returns the inner value if valid, otherwise zero.

Jump to

Keyboard shortcuts

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