|
|
f1c2ee59bd
|
feat(database): Implement comprehensive database service layer
Implemented database service layer with CRUD operations for all models:
- AnimeSeriesService: Create, read, update, delete, search anime series
- EpisodeService: Episode management and download tracking
- DownloadQueueService: Priority-based queue with status tracking
- UserSessionService: Session management with JWT support
Features:
- Repository pattern for clean separation of concerns
- Full async/await support for non-blocking operations
- Comprehensive type hints and docstrings
- Transaction management via FastAPI dependency injection
- Priority queue ordering (HIGH > NORMAL > LOW)
- Automatic timestamp management
- Cascade delete support
Testing:
- 22 comprehensive unit tests with 100% pass rate
- In-memory SQLite for isolated testing
- All CRUD operations tested
Documentation:
- Enhanced database README with service examples
- Integration examples in examples.py
- Updated infrastructure.md with service details
- Migration utilities for schema management
Files:
- src/server/database/service.py (968 lines)
- src/server/database/examples.py (467 lines)
- tests/unit/test_database_service.py (22 tests)
- src/server/database/migrations.py (enhanced)
- src/server/database/__init__.py (exports added)
Closes #9 - Database Layer: Create database service
|
2025-10-19 17:01:00 +02:00 |
|
|
|
ff0d865b7c
|
feat: Implement SQLAlchemy database layer with comprehensive models
Implemented a complete database layer for persistent storage of anime series,
episodes, download queue, and user sessions using SQLAlchemy ORM.
Features:
- 4 SQLAlchemy models: AnimeSeries, Episode, DownloadQueueItem, UserSession
- Automatic timestamp tracking via TimestampMixin
- Foreign key relationships with cascade deletes
- Async and sync database session support
- FastAPI dependency injection integration
- SQLite optimizations (WAL mode, foreign keys)
- Enum types for status and priority fields
Models:
- AnimeSeries: Series metadata with one-to-many relationships
- Episode: Individual episodes linked to series
- DownloadQueueItem: Queue persistence with progress tracking
- UserSession: JWT session storage with expiry and revocation
Database Management:
- Async engine creation with aiosqlite
- Session factory with proper lifecycle
- Connection pooling configuration
- Automatic table creation on initialization
Testing:
- 19 comprehensive unit tests (all passing)
- In-memory SQLite for test isolation
- Relationship and constraint validation
- Query operation testing
Documentation:
- Comprehensive database section in infrastructure.md
- Database package README with examples
- Implementation summary document
- Usage guides and troubleshooting
Dependencies:
- Added: sqlalchemy>=2.0.35 (Python 3.13 compatible)
- Added: alembic==1.13.0 (for future migrations)
- Added: aiosqlite>=0.19.0 (async SQLite driver)
Files:
- src/server/database/__init__.py (package exports)
- src/server/database/base.py (base classes and mixins)
- src/server/database/models.py (ORM models, ~435 lines)
- src/server/database/connection.py (connection management)
- src/server/database/migrations.py (migration placeholder)
- src/server/database/README.md (package documentation)
- tests/unit/test_database_models.py (19 test cases)
- DATABASE_IMPLEMENTATION_SUMMARY.md (implementation summary)
Closes #9 Database Layer implementation task
|
2025-10-17 20:46:21 +02:00 |
|