From 49f7be2a35539bae2d43594c9b39268eec7837d0 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 10 Apr 2024 00:14:11 +0200 Subject: Time ! --- model/time.go | 34 ++++++++++++++++++++++++++++++++++ model/timer.go | 6 ++++-- model/uuid.go | 4 ++-- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 model/time.go (limited to 'model') 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 { -- cgit