Skip to content

Conversation

@drondeseries
Copy link
Owner

No description provided.

javi11 and others added 7 commits December 28, 2025 19:15
* fix: downgrade nntppool and simplify stale items reset

- Downgrade nntppool/v2 from v2.3.1 to v2.3.0
- Downgrade rapidyenc dependency accordingly
- Simplify ResetStaleItems query to reset all processing items without time check
…rvice.go

- Removed unnecessary blank lines to enhance code clarity.
- Adjusted comments for better alignment and consistency.
- Simplified filename generation logic in ensurePersistentNzb function.
)

This is a comprehensive refactoring that introduces:

## Phase 1: Shared Utilities
- Add shared errors package (`internal/errors`) with NonRetryableError
- Add HTTP client factory (`internal/httpclient`) with preset timeouts
- Add config accessor methods (`internal/config/accessors.go`)
- Simplify DeepCopy using jinzhu/copier (235 lines → 15 lines)

## Phase 2: API Standardization
- Create unified response builders (`internal/api/response.go`)
- Migrate all handlers to use response builders:
  - queue_handlers.go
  - health_handlers.go
  - config_handlers.go
  - auth_handlers.go
- Apply admin middleware to protected routes
- SABnzbd handlers intentionally unchanged (API compatibility)

## Benefits
- Consistent JSON response format across all endpoints
- DRY error handling with standard error codes
- Reduced code duplication
- Centralized HTTP client configuration
- Improved maintainability

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <[email protected]>
…11#175)

Extract the 1700+ line importer service into a thin facade delegating to
specialized sub-services:

**New packages:**
- `queue/`: Worker pool management with exponential backoff retry
  - Manager: Start/Stop/Pause/Resume worker lifecycle
  - Claimer: Item claiming with database contention handling
- `scanner/`: Directory scanning and NZBDav imports
  - DirectoryScanner: Manual directory scanning for NZB/STRM files
  - NzbDavImporter: Bulk import from NZBDav databases
- `postprocessor/`: Post-import processing coordination
  - Coordinator: Orchestrates symlinks, STRM files, VFS notifications,
    health scheduling, and ARR notifications

**Changes to service.go:**
- Reduced from ~1700 to ~930 lines (~45% reduction)
- Service now delegates to queueManager, dirScanner, nzbdavImporter
- Implements queue.ItemProcessor interface for processing callbacks
- Type aliases maintain backward compatibility (ScanStatus, ImportInfo, etc.)
- Adapter types bridge Service to sub-service interfaces

**Benefits:**
- Single responsibility: each package has one clear purpose
- Testability: sub-services can be tested in isolation
- Maintainability: smaller, focused files are easier to understand
- Extensibility: new features can be added without touching core service

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <[email protected]>
Extract path validation functions from config/manager.go to a dedicated
pathutil package to avoid import cycles and improve code organization.

**Changes:**
- Create `internal/pathutil/` package
  - `CheckDirectoryWritable`: Validates directory exists and is writable
  - `CheckFileDirectoryWritable`: Validates parent directory of file path
- Update `internal/config/manager.go`:
  - Remove local `checkDirectoryWritable` and `checkFileDirectoryWritable`
  - Import and use pathutil functions instead
  - Replace ~70 lines of code with 3 function calls

**Benefits:**
- Eliminates import cycle (config <-> utils)
- Single responsibility: path validation separated from config management
- Reusable utilities for other packages needing path validation
- Cleaner config package (removes ~70 lines)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
…gured

- Move ErrFallbackNotConfigured to shared internal/errors package to avoid cycle.
- Update PostProcessor interface to return error from HandleFailure.
- Update HandleFailure to return ErrFallbackNotConfigured when fallback is disabled.
- Ensure service stays in 'failed' status and logs skipping when fallback is not used.
@drondeseries drondeseries merged commit e6857f9 into main Dec 29, 2025
1 check passed
@drondeseries drondeseries deleted the fix/fallback-not-configured branch December 30, 2025 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants