nulltypes is a golang module that provides an alternative to nullable data types from database/sql with proper JSON marshalling and unmarshalling.
It also provides a wrapper for time.Time to format time to use with timestamp of SQL databases, i.e. mysql, postgres.
The default database time zone is set to UTC, but it can easily be changed with:
nulltypes.DatabaseLocation, _ = time.LoadLocation([YOUR_TIME_ZONE])import "github.com/datumbrain/nulltypes"Here is an example usage with GORM.
package models
type User struct {
ID uint `json:"id" gorm:"primary_key"`
Name string `json:"name"`
Address nulltypes.NullString `json:"address,omitempty"`
CreationDate time.Time `json:"-" gorm:"autoCreateTime:milli;default:current_timestamp"`
UpdationDate nulltypes.NullTime `json:"-" gorm:"autoUpdateTime:milli"`
TerminationDate nulltypes.NullTime `json:"termination_date,omitempty"`
ManagerID nulltypes.NullInt64 `json:"manager_id,omitempty" gorm:"OnUpdate:CASCADE,OnDelete:SET NULL"`
}user := User{
ID: 0,
Name: "John Doe",
Address: nulltypes.String("221B Baker Street"),
CreationDate: time.Now(),
UpdationDate: nulltypes.Now(),
ManagerID: nulltypes.Int64(5),
}