Add time to timer

This commit is contained in:
2024-04-14 23:51:04 +02:00
parent 3928c520e8
commit 1e9b8d0fa1
6 changed files with 302 additions and 76 deletions

View File

@ -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))
}

View File

@ -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
}

View File

@ -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()
}