diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-04-14 23:51:04 +0200 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-04-14 23:51:04 +0200 |
commit | 1e9b8d0fa114ce706c4fa05004991e516cbddcd7 (patch) | |
tree | 2ba185a018f7b9653e703cdebc90ed643b12f731 /model | |
parent | 3928c520e8b152f47c17ca75fcf5beed4f33f095 (diff) |
Add time to timer
Diffstat (limited to 'model')
-rw-r--r-- | model/time.go | 38 | ||||
-rw-r--r-- | model/timer.go | 11 | ||||
-rw-r--r-- | model/uuid.go | 55 |
3 files changed, 57 insertions, 47 deletions
diff --git a/model/time.go b/model/time.go index baf3ce6..e0c399c 100644 --- a/model/time.go +++ b/model/time.go @@ -1,34 +1,42 @@ package model
import (
- "time"
- "errors"
- sqldriver "database/sql/driver"
+ sqldriver "database/sql/driver"
+ "errors"
+ "time"
)
type Time time.Time
func MakeTimeNow() Time {
- return Time(time.Now().UTC())
+ return Time(time.Now().UTC())
}
func (self Time) AsUTCString() string {
- return time.Time(self).Format(time.RFC3339)
+ return time.Time(self).Format(time.RFC3339)
}
func (self Time) Value() (sqldriver.Value, error) {
- return self.AsUTCString(), nil
+ 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")
- }
+ 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))
}
diff --git a/model/timer.go b/model/timer.go index 4c81962..a47369d 100644 --- a/model/timer.go +++ b/model/timer.go @@ -1,9 +1,12 @@ package model
type Timer struct {
- Id UUID
- Name string
- StartTime Time
- EndTime Time
+ Id UUID
+ Name string
+ StartTime Time
+ EndTime Time
}
+func (self Timer) IsFinished() bool {
+ return MakeTimeNow().Compare(self.EndTime) >= 0
+}
diff --git a/model/uuid.go b/model/uuid.go index 4a25e41..6cade35 100644 --- a/model/uuid.go +++ b/model/uuid.go @@ -1,28 +1,27 @@ -package model
-
-import (
- sqldriver "database/sql/driver"
- "github.com/google/uuid"
-)
-
-type UUID struct {
- payload uuid.UUID
-}
-
-func MakeUUID() UUID {
- id, _ := uuid.NewV7()
- return UUID { payload: id }
-}
-
-func (self UUID) Value() (sqldriver.Value, error) {
- return self.payload[:], nil
-}
-
-func (self *UUID) Scan(value any) error {
- return self.payload.Scan(value)
-}
-
-func (self UUID) String() string {
- return self.payload.String()
-}
-
+package model + +import ( + sqldriver "database/sql/driver" + "github.com/google/uuid" +) + +type UUID struct { + payload uuid.UUID +} + +func MakeUUID() UUID { + id, _ := uuid.NewV7() + return UUID{payload: id} +} + +func (self UUID) Value() (sqldriver.Value, error) { + return self.payload[:], nil +} + +func (self *UUID) Scan(value any) error { + return self.payload.Scan(value) +} + +func (self UUID) String() string { + return self.payload.String() +} |