12345678910111213141516171819202122232425262728293031323334353637 |
- package models
- import (
- "database/sql"
- "database/sql/driver"
- "github.com/rotisserie/eris"
- )
- func NewBool(b bool) sql.NullBool {
- return sql.NullBool{Bool: b, Valid: true}
- }
- // BitBool is an implementation of a bool for the MySQL type BIT(1).
- // This type allows you to avoid wasting an entire byte for MySQL's boolean type TINYINT.
- type BitBool bool
- // Value implements the driver.Valuer interface,
- // and turns the BitBool into a bitfield (BIT(1)) for MySQL storage.
- func (b BitBool) Value() (driver.Value, error) {
- if b {
- return []byte{1}, nil
- } else {
- return []byte{0}, nil
- }
- }
- // Scan implements the sql.Scanner interface,
- // and turns the bitfield incoming from MySQL into a BitBool
- func (b *BitBool) Scan(src interface{}) error {
- v, ok := src.([]byte)
- if !ok {
- return eris.New("bad []byte type assertion")
- }
- *b = v[0] == 1
- return nil
- }
|