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:
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
+}