fetch_ml/internal/worker/interfaces/tracker.go
Jeremie Fraeys ae0a370fb4
refactor: Phase 1 - Extract worker interfaces
Created interfaces package to break tight coupling:

1. internal/worker/interfaces/executor.go (30 lines)
   - JobExecutor interface for job execution
   - ExecutionEnv struct for execution context
   - ExecutionResult struct for results

2. internal/worker/interfaces/tracker.go (20 lines)
   - ProgressTracker interface for execution stages
   - StageStart, StageComplete, StageFailed methods
   - JobComplete for final status

3. internal/worker/interfaces/manifest.go (18 lines)
   - ManifestWriter interface for manifest operations
   - Upsert method for update/create
   - BuildInitial method for creating new manifests

These interfaces will enable:
- Dependency injection in future phases
- Mocking for unit tests
- Clean separation between orchestration and execution

Build status: Compiles successfully
2026-02-17 14:10:03 -05:00

21 lines
634 B
Go

// Package interfaces defines the contracts for worker components
package interfaces
import (
"time"
)
// ProgressTracker defines the contract for tracking job execution progress
type ProgressTracker interface {
// StageStart marks the beginning of an execution stage
StageStart(taskID, stage string)
// StageComplete marks successful completion of a stage
StageComplete(taskID, stage string, duration time.Duration)
// StageFailed marks a stage failure
StageFailed(taskID, stage string, err error)
// JobComplete marks job completion with final status
JobComplete(taskID string, success bool, duration time.Duration)
}