package model import ( sqldriver "database/sql/driver" "errors" "time" ) type Time time.Time func MakeTimeNow() Time { return Time(time.Now().UTC()) } func (self Time) AsUTCString() string { return time.Time(self).Format(time.RFC3339) } func (self Time) Value() (sqldriver.Value, error) { return self.AsUTCString(), nil } func (self *Time) Scan(value any) error { if valueStr, ok := value.(string); ok { parsedTime, err := time.Parse(time.RFC3339, valueStr) if err == nil { *self = Time(parsedTime.UTC()) } return err } else { return errors.New("Expected a string") } } func (from Time) Compare(to Time) int { return time.Time(from).Compare(time.Time(to)) } func (self *Time) Add(duration time.Duration) { *self = Time(time.Time(*self).Add(duration)) }