mirror of https://github.com/statping/statping
76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
package null
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
func (s NullString) Value() (driver.Value, error) {
|
|
return s.String, nil
|
|
}
|
|
|
|
// MarshalJSON for NullInt64
|
|
func (i NullInt64) MarshalJSON() ([]byte, error) {
|
|
if !i.Valid {
|
|
return []byte("null"), nil
|
|
}
|
|
return json.Marshal(i.Int64)
|
|
}
|
|
|
|
// MarshalJSON for NullFloat64
|
|
func (f NullFloat64) MarshalJSON() ([]byte, error) {
|
|
if !f.Valid {
|
|
return []byte("null"), nil
|
|
}
|
|
return json.Marshal(f.Float64)
|
|
}
|
|
|
|
// MarshalJSON for NullBool
|
|
func (bb NullBool) MarshalJSON() ([]byte, error) {
|
|
if !bb.Valid {
|
|
return []byte("null"), nil
|
|
}
|
|
return json.Marshal(bb.Bool)
|
|
}
|
|
|
|
// MarshalJSON for NullString
|
|
func (s NullString) MarshalJSON() ([]byte, error) {
|
|
if !s.Valid {
|
|
return json.Marshal(nil)
|
|
}
|
|
return json.Marshal(s.String)
|
|
}
|
|
|
|
// MarshalYAML for NullInt64
|
|
func (i NullInt64) MarshalYAML() (interface{}, error) {
|
|
if !i.Valid {
|
|
return 0, nil
|
|
}
|
|
return yaml.Marshal(i.Int64)
|
|
}
|
|
|
|
// MarshalYAML for NullFloat64
|
|
func (f NullFloat64) MarshalYAML() (interface{}, error) {
|
|
if !f.Valid {
|
|
return 0.0, nil
|
|
}
|
|
return yaml.Marshal(f.Float64)
|
|
}
|
|
|
|
// MarshalYAML for NullBool
|
|
func (bb NullBool) MarshalYAML() (interface{}, error) {
|
|
if !bb.Valid {
|
|
return false, nil
|
|
}
|
|
return yaml.Marshal(bb.Bool)
|
|
}
|
|
|
|
// MarshalYAML for NullString
|
|
func (s NullString) MarshalYAML() (interface{}, error) {
|
|
if !s.Valid {
|
|
return "", nil
|
|
}
|
|
return yaml.Marshal(s.String)
|
|
}
|