tme

Toggl like Time Manager
git clone git://gtms.dev:tme
Log | Files | Refs

commit bb28f2d3003885a75beda9961fab59a4b5b93bd5
parent d56b7643c73c67460180b3af60f4e53917aa3bae
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Tue, 21 Feb 2023 22:27:18 +0100

refactor(time_range): usage of NewTimeRange

Diffstat:
Mentry.go | 13++++++-------
Drange.go | 19-------------------
Mrepository.go | 15++++++++++-----
Atime_range.go | 19+++++++++++++++++++
4 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/entry.go b/entry.go @@ -8,7 +8,7 @@ type Entry struct { } func NewCompleted(start time.Time, stop time.Time) (Entry, error) { - timeRange, err := New(start, stop) + timeRange, err := NewTimeRange(start, stop) if err != nil { return Entry{}, err } @@ -17,7 +17,7 @@ func NewCompleted(start time.Time, stop time.Time) (Entry, error) { } func NewRunning(start time.Time) Entry { - timeRange, _ := New(start, start.Add(time.Second)) + timeRange, _ := NewTimeRange(start, start.Add(time.Second)) return Entry{TimeRange: timeRange, Completed: false} } @@ -25,10 +25,9 @@ func (e Entry) Duration() time.Duration { return e.TimeRange.Stop.Sub(e.TimeRange.Start) } -func (e *Entry) Complete(stop time.Time) { - e.TimeRange = TimeRange{ - Start: e.TimeRange.Start, - Stop: stop, - } +func (e *Entry) Complete(stop time.Time) error { + timeRange, err := NewTimeRange(e.TimeRange.Start, stop) + e.TimeRange = timeRange e.Completed = true + return err } diff --git a/range.go b/range.go @@ -1,19 +0,0 @@ -package main - -import ( - "errors" - "time" -) - -type TimeRange struct { - Start time.Time - Stop time.Time -} - -func New(start time.Time, stop time.Time) (TimeRange, error) { - if start.After(stop) || start.Equal(stop) { - return TimeRange{}, errors.New("duration must be positive") - } - - return TimeRange{Start: start, Stop: stop}, nil -} diff --git a/repository.go b/repository.go @@ -33,8 +33,13 @@ func (repo FSRepository) RunningEntry(group Group, entryTime *TimeContext) (Entr firstLine := strings.Split(string(data), "\n")[0] start, _ := entryTime.ParseEntry(firstLine) + timeRange, err := NewTimeRange(start, time.Now()) + if err != nil { + return Entry{}, err + } + return Entry{ - TimeRange: TimeRange{start, time.Now()}, + TimeRange: timeRange, Completed: false, }, nil } @@ -159,12 +164,12 @@ func (repo FSRepository) find(entryPath string, entryTime *TimeContext) (Entry, if base == activeFile { start, _ := entryTime.ParseEntry(lines[0]) - timeRange := TimeRange{start, time.Now()} - return Entry{Completed: false, TimeRange: timeRange}, nil + timeRange, err := NewTimeRange(start, start.Add(time.Second)) + return Entry{Completed: false, TimeRange: timeRange}, err } else { start, _ := entryTime.ParseEntry(lines[0]) stop, _ := entryTime.ParseEntry(lines[1]) - timeRange := TimeRange{start, stop} - return Entry{Completed: true, TimeRange: timeRange}, nil + timeRange, err := NewTimeRange(start, stop) + return Entry{Completed: true, TimeRange: timeRange}, err } } diff --git a/time_range.go b/time_range.go @@ -0,0 +1,19 @@ +package main + +import ( + "errors" + "time" +) + +type TimeRange struct { + Start time.Time + Stop time.Time +} + +func NewTimeRange(start time.Time, stop time.Time) (TimeRange, error) { + if start.After(stop) || start.Equal(stop) { + return TimeRange{}, errors.New("duration must be positive") + } + + return TimeRange{Start: start, Stop: stop}, nil +}