summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-10 00:14:11 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-10 00:14:11 +0200
commit49f7be2a35539bae2d43594c9b39268eec7837d0 (patch)
tree69b43e7ce19522b26e57bb1e82a51e9a03ee7523 /model
parentc60dd3357fc84e14795f5f864e9fa9ce7150179f (diff)
Time !
Diffstat (limited to 'model')
-rw-r--r--model/time.go34
-rw-r--r--model/timer.go6
-rw-r--r--model/uuid.go4
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 {