chore: ⬆️ updated deps
This commit is contained in:
+159
@@ -0,0 +1,159 @@
|
||||
package mssql
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/golang-sql/civil"
|
||||
)
|
||||
|
||||
type NullDate struct {
|
||||
Date civil.Date
|
||||
Valid bool
|
||||
}
|
||||
|
||||
func (n *NullDate) Scan(value interface{}) error {
|
||||
if value == nil {
|
||||
n.Date, n.Valid = civil.Date{}, false
|
||||
return nil
|
||||
}
|
||||
switch v := value.(type) {
|
||||
case time.Time:
|
||||
n.Valid = true
|
||||
n.Date = civil.DateOf(v)
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("cannot scan %T into NullDate", value)
|
||||
}
|
||||
}
|
||||
|
||||
func (n NullDate) Value() (driver.Value, error) {
|
||||
if !n.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return n.Date, nil
|
||||
}
|
||||
|
||||
func (n NullDate) String() string {
|
||||
if !n.Valid {
|
||||
return "NULL"
|
||||
}
|
||||
return n.Date.String()
|
||||
}
|
||||
|
||||
func (n NullDate) MarshalText() ([]byte, error) {
|
||||
if !n.Valid {
|
||||
return []byte("null"), nil
|
||||
}
|
||||
return n.Date.MarshalText()
|
||||
}
|
||||
|
||||
func (n *NullDate) UnmarshalText(data []byte) error {
|
||||
if string(data) == "null" {
|
||||
n.Date, n.Valid = civil.Date{}, false
|
||||
return nil
|
||||
}
|
||||
n.Valid = true
|
||||
return n.Date.UnmarshalText(data)
|
||||
}
|
||||
|
||||
type NullDateTime struct {
|
||||
DateTime civil.DateTime
|
||||
Valid bool
|
||||
}
|
||||
|
||||
func (n *NullDateTime) Scan(value interface{}) error {
|
||||
if value == nil {
|
||||
n.DateTime, n.Valid = civil.DateTime{}, false
|
||||
return nil
|
||||
}
|
||||
switch v := value.(type) {
|
||||
case time.Time:
|
||||
n.Valid = true
|
||||
n.DateTime = civil.DateTimeOf(v)
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("cannot scan %T into NullDateTime", value)
|
||||
}
|
||||
}
|
||||
|
||||
func (n NullDateTime) Value() (driver.Value, error) {
|
||||
if !n.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return n.DateTime, nil
|
||||
}
|
||||
|
||||
func (n NullDateTime) String() string {
|
||||
if !n.Valid {
|
||||
return "NULL"
|
||||
}
|
||||
return n.DateTime.String()
|
||||
}
|
||||
|
||||
func (n NullDateTime) MarshalText() ([]byte, error) {
|
||||
if !n.Valid {
|
||||
return []byte("null"), nil
|
||||
}
|
||||
return n.DateTime.MarshalText()
|
||||
}
|
||||
|
||||
func (n *NullDateTime) UnmarshalText(data []byte) error {
|
||||
if string(data) == "null" {
|
||||
n.DateTime, n.Valid = civil.DateTime{}, false
|
||||
return nil
|
||||
}
|
||||
n.Valid = true
|
||||
return n.DateTime.UnmarshalText(data)
|
||||
}
|
||||
|
||||
type NullTime struct {
|
||||
Time civil.Time
|
||||
Valid bool
|
||||
}
|
||||
|
||||
func (n *NullTime) Scan(value interface{}) error {
|
||||
if value == nil {
|
||||
n.Time, n.Valid = civil.Time{}, false
|
||||
return nil
|
||||
}
|
||||
switch v := value.(type) {
|
||||
case time.Time:
|
||||
n.Valid = true
|
||||
n.Time = civil.TimeOf(v)
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("cannot scan %T into NullTime", value)
|
||||
}
|
||||
}
|
||||
|
||||
func (n NullTime) Value() (driver.Value, error) {
|
||||
if !n.Valid {
|
||||
return nil, nil
|
||||
}
|
||||
return n.Time, nil
|
||||
}
|
||||
|
||||
func (n NullTime) String() string {
|
||||
if !n.Valid {
|
||||
return "NULL"
|
||||
}
|
||||
return n.Time.String()
|
||||
}
|
||||
|
||||
func (n NullTime) MarshalText() ([]byte, error) {
|
||||
if !n.Valid {
|
||||
return []byte("null"), nil
|
||||
}
|
||||
return n.Time.MarshalText()
|
||||
}
|
||||
|
||||
func (n *NullTime) UnmarshalText(data []byte) error {
|
||||
if string(data) == "null" {
|
||||
n.Time, n.Valid = civil.Time{}, false
|
||||
return nil
|
||||
}
|
||||
n.Valid = true
|
||||
return n.Time.UnmarshalText(data)
|
||||
}
|
||||
Reference in New Issue
Block a user