M9.1: wire sync logging into all mutation paths

- Add LogClosedDayDelete and LogClosedWeekDelete to SyncStore
- Inject syncStore into EntryService; log Start, Stop, StopByID,
  Update, CreateInterval, Delete, AutoStopStalledEntries
- Inject syncStore into DayService; log CloseDay, MarkDay, ReopenDay,
  and the recomputeWeek closed-week upsert
- Inject syncStore into SettingsService; log Upsert, UpdateSettings,
  DeleteSettings
- Add LogClosedWeek/LogClosedWeekDelete calls in WeekService.CloseWeek
  and ReopenWeek
- Update main.go and all service test helpers for new constructor signatures
- All Go tests and 19 Vitest tests pass
This commit is contained in:
2026-04-30 22:57:02 +02:00
parent d8366f5c25
commit a8a4ea0d4f
9 changed files with 82 additions and 30 deletions

View File

@@ -22,6 +22,7 @@ type DayService struct {
closedDays *store.ClosedDayStore
closedWeeks *store.ClosedWeekStore
settings *store.SettingsStore
syncStore *store.SyncStore
tz *time.Location
}
@@ -30,6 +31,7 @@ func NewDayService(
closedDays *store.ClosedDayStore,
closedWeeks *store.ClosedWeekStore,
settings *store.SettingsStore,
syncStore *store.SyncStore,
tz *time.Location,
) *DayService {
return &DayService{
@@ -37,6 +39,7 @@ func NewDayService(
closedDays: closedDays,
closedWeeks: closedWeeks,
settings: settings,
syncStore: syncStore,
tz: tz,
}
}
@@ -74,7 +77,11 @@ func (s *DayService) recomputeWeek(ctx context.Context, dayKey string) error {
cw.WorkedMs = totalWorkedMs
cw.DeltaMs = totalWorkedMs - cw.ExpectedMs
cw.UpdatedAt = time.Now().UnixMilli()
return s.closedWeeks.Upsert(ctx, cw)
if err := s.closedWeeks.Upsert(ctx, cw); err != nil {
return err
}
_ = s.syncStore.LogClosedWeek(ctx, cw)
return nil
}
// CloseDay merges all completed entries for the given day key into a ClosedDay.
@@ -136,6 +143,7 @@ func (s *DayService) CloseDay(ctx context.Context, dayKey string) (*domain.Close
if err := s.closedDays.Upsert(ctx, cd); err != nil {
return nil, err
}
_ = s.syncStore.LogClosedDay(ctx, cd)
if err := s.recomputeWeek(ctx, dayKey); err != nil {
return nil, err
}
@@ -175,6 +183,7 @@ func (s *DayService) MarkDay(ctx context.Context, dayKey string, kind domain.Day
if err := s.closedDays.Upsert(ctx, cd); err != nil {
return nil, err
}
_ = s.syncStore.LogClosedDay(ctx, cd)
if err := s.recomputeWeek(ctx, dayKey); err != nil {
return nil, err
}
@@ -196,6 +205,7 @@ func (s *DayService) ReopenDay(ctx context.Context, dayKey string) error {
if err := s.closedDays.Delete(ctx, dayKey); err != nil {
return err
}
_ = s.syncStore.LogClosedDayDelete(ctx, dayKey)
return s.recomputeWeek(ctx, dayKey)
}