lbry.go/extras/null/README.md

90 lines
2.2 KiB
Markdown
Raw Normal View History

## null-extended [![GoDoc](https://godoc.org/github.com/nullbio/null?status.svg)](https://godoc.org/github.com/nullbio/null) [![Coverage](http://gocover.io/_badge/github.com/nullbio/null)](http://gocover.io/github.com/nullbio/null)
2014-09-01 07:38:26 +02:00
2018-02-23 15:22:36 +01:00
*Forked from https://github.com/nullbio/null*
2016-11-12 02:52:19 +01:00
null-extended is a library with reasonable options for dealing with nullable SQL and JSON values
2014-08-31 10:30:01 +02:00
2016-11-12 02:52:19 +01:00
Types in `null` will only be considered null on null input, and will JSON encode to `null`.
2014-08-31 10:30:01 +02:00
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` and `sql.Scanner`.
2014-08-31 10:28:34 +02:00
2016-11-12 02:57:45 +01:00
---
Install:
`go get -u "gopkg.in/nullbio/null.v6"`
### null package
2014-09-01 06:46:40 +02:00
2016-11-12 02:40:19 +01:00
`import "gopkg.in/nullbio/null.v6"`
2016-09-07 15:00:53 +02:00
2016-11-12 02:57:45 +01:00
The following are all types supported in this package. All types will marshal to JSON null if Invalid or SQL source data is null.
2016-09-07 15:00:53 +02:00
#### null.JSON
Nullable []byte.
Will marshal to JSON null if Invalid. []byte{} input will not produce an Invalid JSON, but []byte(nil) will. This should be used for storing raw JSON in the database.
Also has `null.JSON.Marshal` and `null.JSON.Unmarshal` helpers to marshal and unmarshal foreign objects.
#### null.Bytes
Nullable []byte.
2016-11-12 02:57:45 +01:00
[]byte{} input will not produce an Invalid Bytes, but []byte(nil) will. This should be used for storing binary data (bytea in PSQL for example) in the database.
2014-09-01 06:46:40 +02:00
#### null.String
Nullable string.
2014-08-29 03:29:17 +02:00
2016-11-12 02:57:45 +01:00
#### null.Byte
Nullable byte.
#### null.Bool
Nullable bool.
#### null.Time
2016-11-12 02:57:45 +01:00
Nullable time.Time
2016-11-12 02:57:45 +01:00
Marshals to JSON null if SQL source data is null. Uses `time.Time`'s marshaler.
#### null.Float32
Nullable float32.
#### null.Float64
Nullable float64.
#### null.Int
Nullable int.
2014-08-30 17:03:04 +02:00
#### null.Int8
Nullable int8.
2014-09-01 06:46:40 +02:00
#### null.Int16
Nullable int16.
2014-09-01 06:46:40 +02:00
#### null.Int32
Nullable int32.
2015-09-13 22:07:53 +02:00
#### null.Int64
Nullable int64.
#### null.Uint
Nullable uint.
#### null.Uint8
Nullable uint8.
#### null.Uint16
Nullable uint16.
#### null.Uint32
Nullable int32.
#### null.Int64
Nullable uint64.
2014-08-29 03:29:17 +02:00
### 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](https://github.com/golang/go/issues/4357).
2014-08-29 03:29:17 +02:00
### License
2015-10-21 00:13:05 +02:00
BSD