From 1e9b8d0fa114ce706c4fa05004991e516cbddcd7 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sun, 14 Apr 2024 23:51:04 +0200 Subject: Add time to timer --- model/time.go | 38 +++++++++++++++++++++++--------------- model/timer.go | 11 +++++++---- model/uuid.go | 55 +++++++++++++++++++++++++++---------------------------- 3 files changed, 57 insertions(+), 47 deletions(-) (limited to 'model') 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() +} -- cgit