diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-04-10 00:14:11 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-04-10 00:14:11 +0200 |
commit | 49f7be2a35539bae2d43594c9b39268eec7837d0 (patch) | |
tree | 69b43e7ce19522b26e57bb1e82a51e9a03ee7523 /model | |
parent | c60dd3357fc84e14795f5f864e9fa9ce7150179f (diff) |
Time !
Diffstat (limited to 'model')
-rw-r--r-- | model/time.go | 34 | ||||
-rw-r--r-- | model/timer.go | 6 | ||||
-rw-r--r-- | model/uuid.go | 4 |
3 files changed, 40 insertions, 4 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")
+ }
+}
+
diff --git a/model/timer.go b/model/timer.go index 73bf7bc..4c81962 100644 --- a/model/timer.go +++ b/model/timer.go @@ -1,7 +1,9 @@ package model
type Timer struct {
- Id UUID
- Name string
+ Id UUID
+ Name string
+ StartTime Time
+ EndTime Time
}
diff --git a/model/uuid.go b/model/uuid.go index f072d92..8852cc8 100644 --- a/model/uuid.go +++ b/model/uuid.go @@ -9,13 +9,13 @@ type UUID struct { payload uuid.UUID
}
-func NewUUID() UUID {
+func MakeUUID() UUID {
id, _ := uuid.NewRandom()
return UUID { payload: id }
}
func (self UUID) Value() (sqldriver.Value, error) {
- return self.payload.MarshalBinary()
+ return self.payload[:], nil
}
func (self *UUID) Scan(value any) error {
|