Added JobRepository and JobServices
This commit is contained in:
65
Readme.md
65
Readme.md
@@ -342,6 +342,71 @@ class ProcessingJob(BaseModel):
|
||||
4. TODO : Watchdog file monitoring implementation
|
||||
5. TODO : FastAPI integration and startup coordination
|
||||
|
||||
## Job Management Layer
|
||||
|
||||
### Repository Pattern Implementation
|
||||
|
||||
The job management system follows the repository pattern for clean separation between data access and business logic.
|
||||
|
||||
#### JobRepository
|
||||
|
||||
Handles direct MongoDB operations for processing jobs:
|
||||
|
||||
**CRUD Operations:**
|
||||
- `create_job()` - Create new processing job with automatic `created_at` timestamp
|
||||
- `get_job_by_id()` - Retrieve job by ObjectId
|
||||
- `update_job_status()` - Update job status with automatic timestamp management
|
||||
- `delete_job()` - Remove job from database
|
||||
- `get_jobs_by_file_id()` - Get all jobs for specific file
|
||||
- `get_jobs_by_status()` - Get jobs filtered by processing status
|
||||
|
||||
**Automatic Timestamp Management:**
|
||||
- `created_at`: Set automatically during job creation
|
||||
- `started_at`: Set automatically when status changes to PROCESSING
|
||||
- `completed_at`: Set automatically when status changes to COMPLETED or FAILED
|
||||
|
||||
#### JobService
|
||||
|
||||
Provides business logic layer with strict status transition validation:
|
||||
|
||||
**Status Transition Methods:**
|
||||
- `mark_job_as_started()` - PENDING → PROCESSING
|
||||
- `mark_job_as_completed()` - PROCESSING → COMPLETED
|
||||
- `mark_job_as_failed()` - PROCESSING → FAILED
|
||||
|
||||
**Validation Rules:**
|
||||
- Strict status transitions (invalid transitions raise exceptions)
|
||||
- Job existence verification before any operation
|
||||
- Automatic timestamp management through repository layer
|
||||
|
||||
#### Custom Exceptions
|
||||
|
||||
**JobNotFoundError**: Raised when job ID doesn't exist
|
||||
**InvalidStatusTransitionError**: Raised for invalid status transitions
|
||||
**JobRepositoryError**: Raised for MongoDB operation failures
|
||||
|
||||
#### Valid Status Transitions
|
||||
|
||||
```
|
||||
PENDING → PROCESSING (via mark_job_as_started)
|
||||
PROCESSING → COMPLETED (via mark_job_as_completed)
|
||||
PROCESSING → FAILED (via mark_job_as_failed)
|
||||
```
|
||||
|
||||
All other transitions are forbidden and will raise `InvalidStatusTransitionError`.
|
||||
|
||||
### File Structure
|
||||
|
||||
```
|
||||
src/file-processor/app/
|
||||
├── database/repositories/
|
||||
│ └── job_repository.py # JobRepository class
|
||||
├── services/
|
||||
│ └── job_service.py # JobService class
|
||||
└── exceptions/
|
||||
└── job_exceptions.py # Custom exceptions
|
||||
```
|
||||
|
||||
### Processing Pipeline Features
|
||||
|
||||
- **Duplicate Detection**: SHA256 hashing prevents reprocessing same files
|
||||
|
||||
Reference in New Issue
Block a user