diff options
Diffstat (limited to 'model/time.go')
-rw-r--r-- | model/time.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/model/time.go b/model/time.go new file mode 100644 index 0000000..b7dc3d2 --- /dev/null +++ b/model/time.go @@ -0,0 +1,34 @@ +package model
+
+import (
+ "time"
+ "errors"
+ sqldriver "database/sql/driver"
+)
+
+type Time time.Time
+
+func MakeTimeNow() Time {
+ return Time(time.Now().UTC())
+}
+
+func (self Time) String() string {
+ return time.Time(self).String()
+}
+
+func (self Time) Value() (sqldriver.Value, error) {
+ return time.Time(self).Format(time.RFC3339), 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")
+ }
+}
+
|