package actions import ( "errors" "time" ) // Common errors var ( ErrNoActiveTimer = errors.New("no active timer found") ErrClientRequired = errors.New("client is required") ErrClientNotFound = errors.New("client not found") ErrProjectNotFound = errors.New("project not found") ErrAmbiguousClient = errors.New("ambiguous client reference") ErrAmbiguousProject = errors.New("ambiguous project reference") ErrProjectClientMismatch = errors.New("project does not belong to specified client") ErrNoRecentEntries = errors.New("no previous time entries found") ) // TimerSession represents an active or completed time tracking session type TimerSession struct { ID int64 ClientName string ProjectName string // empty if no project Description string // empty if no description StartTime time.Time EndTime *time.Time // nil if still active Duration time.Duration WasNoOp bool // true if timer was already active with same parameters StoppedEntryID *int64 // ID of previously stopped entry (if any) }