master @ 44 LINES
[ HISTORY ] [ UP ]
┌─ GO ───────────────────────────────────────────────────────────────────────┐
│ package pipeline │
│ │
│ import ( │
│ "errors" │
│ "fmt" │
│ "net/http" │
│ "time" │
│ │
│ "github.com/charmbracelet/log" │
│ "ookstats/internal/blizzard" │
│ ) │
│ │
│ func nowMillis() int64 { │
│ return time.Now().UnixMilli() │
│ } │
│ │
│ func extractCharacterID(resp *blizzard.CharacterStatusResponse) *int { │
│ if resp == nil || resp.Character.ID <= 0 { │
│ return nil │
│ } │
│ id := resp.Character.ID │
│ return &id │
│ } │
│ │
│ func isNotFoundError(err error) bool { │
│ var apiErr *blizzard.APIError │
│ return errors.As(err, &apiErr) && apiErr.Status == http.StatusNotFound │
│ } │
│ │
│ func logBatchProgress(tracker *BatchTracker, logger *log.Logger, processed, batchN │
│ umber int) { │
│ if !tracker.ShouldLogProgress(processed) { │
│ return │
│ } │
│ stats := tracker.ProgressStats(processed, batchNumber) │
│ logger.Info("progress", │
│ "batch", stats.Batch, │
│ "processed", stats.Processed, │
│ "target", stats.Target, │
│ "remaining_estimate", stats.Remaining, │
│ "percent_complete", fmt.Sprintf("%.1f%%", stats.Percent), │
│ "req_per_sec", fmt.Sprintf("%.1f", stats.RPS), │
│ "elapsed", stats.Elapsed.Truncate(time.Second)) │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ GO ─────────────────────────────────┐
│ package pipeline │
│ │
│ import ( │
│ "errors" │
│ "fmt" │
│ "net/http" │
│ "time" │
│ │
│ "github.com/charmbracelet/log" │
│ "ookstats/internal/blizzard" │
│ ) │
│ │
│ func nowMillis() int64 { │
│ return time.Now().UnixMilli() │
│ } │
│ │
│ func extractCharacterID(resp *blizzard.Chara │
│ cterStatusResponse) *int { │
│ if resp == nil || resp.Character.ID <= 0 { │
│ return nil │
│ } │
│ id := resp.Character.ID │
│ return &id │
│ } │
│ │
│ func isNotFoundError(err error) bool { │
│ var apiErr *blizzard.APIError │
│ return errors.As(err, &apiErr) && apiErr.St │
│ atus == http.StatusNotFound │
│ } │
│ │
│ func logBatchProgress(tracker *BatchTracker, │
│ logger *log.Logger, processed, batchNumber │
│ int) { │
│ if !tracker.ShouldLogProgress(processed) { │
│ return │
│ } │
│ stats := tracker.ProgressStats(processed, b │
│ atchNumber) │
│ logger.Info("progress", │
│ "batch", stats.Batch, │
│ "processed", stats.Processed, │
│ "target", stats.Target, │
│ "remaining_estimate", stats.Remaining, │
│ "percent_complete", fmt.Sprintf("%.1f%%", │
│ stats.Percent), │
│ "req_per_sec", fmt.Sprintf("%.1f", stats.R │
│ PS), │
│ "elapsed", stats.Elapsed.Truncate(time.Sec │
│ ond)) │
│ } │
└──────────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET