go-nullable-mysql
Enhanced support of NULL values in JSON marshalling and unmarshalling for MySQL datatypes in Go. I.e., SQL NULL <-> JSON null. Also, add support for MySQL DATE types.
Usage
import (
...
"database/sql"
"time"
"github.com/Liquid-Labs/go-nullable-mysql/nulls"
)
type Foo struct {
ADate nulls.Date `json:"aDate"`
ATimestamp nulls.Timestamp `json:"aTime"`
}
func SaveData(foo *Foo) (error) {
_, err := insertFooStmt.Exec(foo.ADate, foo.ATimestamp)
...
}
func ScanFoo(row sql.Row) (*Foo, error) {
foo := Foo{}
if err := row.Scan(&foo.ADate, &foo.ATimestamp); err != nil {
return nil, err
}
return &foo, nil
}
func MakeFoo(dateString string, time time.timeStamp) (Foo) {
return Foo{nulls.NewDate(dateString), nulls.NewTimestamp(time)}
}
Supported types are:
NullBool - a MySQL BOOL (==TINYINT(1)) <-> golang bool
NullDate - a MySQL DATE <-> golang string in 'YYYY-MM-DD' format
NullFloat64 - a MySQL DOUBLE (or FLOAT if you like) <-> golang float64
NullInt64 - a MySQL INT <-> golang int64
NullString - a MySQL VARCHAR, CHAR, TEXT, etc. <-> golang string
NullTimestamp - a MySQL TIMESTAMP <-> golang time.Time
References