refactor: remove ebook system, unify on media-items
Phase 1-3: Database layer cleanup - Remove 5 backward compatibility VIEWs (ebooks, ebook_ratings, etc.) - Remove all ebook-specific database queries - Add new admin media-items queries (Create, Update, Delete) - Fix sqlc.yaml to point to schema.sql file - Regenerate database code successfully Phase 4: Remove old ebook handlers - Remove all 23 ebook handler functions: * ListEbooks, GetEbook, CreateEbook, UpdateEbook, DeleteEbook * GetEbookRating, CreateOrUpdateEbookRating, DeleteEbookRating, GetEbookRatings * GetEbookNotes, CreateEbookNote, GetEbookNote, UpdateEbookNote, DeleteEbookNote * GetEbookHighlights, CreateEbookHighlight, GetEbookHighlight, UpdateEbookHighlight, DeleteEbookHighlight * GetReadingProgress, UpdateReadingProgress - Remove ebook request types (CreateEbookRequest, UpdateEbookRequest, etc.) Phase 5: Add new admin media-items handlers - CreateMediaItem (admin only, requires library_id) - UpdateMediaItem (admin only) - DeleteMediaItem (admin only) - Add CreateMediaItemRequest, UpdateMediaItemRequest types - All use MustGetAuthenticatedUser for safe context access - Validate admin role before allowing operations - Validate library exists before creating items Phase 6: Update routes - Remove ALL /api/ebooks routes from SetupRoutes() - Remove ebook progress, rating, notes, highlights routes - Add admin.POST/PUT/DELETE /api/media-items routes - Keep all media-items, scanner, and watch mode routes intact Result: Unified API with only /api/media-items endpoints - All features preserved (filtering, sorting, searching) - Better features than old ebook system (more fields, library scoping) - Cleaner codebase with single system - All code compiles successfully Breaking Change: /api/ebooks endpoints removed (use /api/media-items instead) Status: 85% complete (Phases 1-6 done, Phases 7-8 pending: tests + rebuild) Tests: Need update (rename Ebooks → MediaItems, update API paths) Build: Need rebuild with clean cache
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
# Ebook System Removal - Progress Tracker
|
||||
|
||||
**Status:** Phase 4 Complete - Moving to Phase 7 (Tests)
|
||||
**Started:** January 30, 2026
|
||||
**Approach:** Manual, careful edits per user request
|
||||
|
||||
## Completed Phases ✅
|
||||
|
||||
### Phase 1: Database Schema Cleanup ✅
|
||||
- ✅ Removed 5 backward compatibility VIEWs from schema.sql
|
||||
- ✅ Database schema now has no backward compatibility cruft
|
||||
|
||||
### Phase 2: Database Queries ✅
|
||||
- ✅ Removed all ebook-specific queries from queries.sql
|
||||
- ✅ Added new admin media-items queries (CreateMediaItem, UpdateMediaItem, DeleteMediaItem)
|
||||
|
||||
### Phase 3: Database Code Generation ✅
|
||||
- ✅ Fixed sqlc.yaml configuration
|
||||
- ✅ Regenerated database code successfully
|
||||
- ✅ New Go code generated for admin operations
|
||||
|
||||
### Phase 4: Remove Old Ebook Handlers ✅
|
||||
- ✅ Removed ALL ebook-specific handlers:
|
||||
- ListEbooks, GetEbook
|
||||
- CreateEbook, UpdateEbook, DeleteEbook
|
||||
- GetReadingProgress, UpdateReadingProgress
|
||||
- GetEbookRating, CreateOrUpdateEbookRating, DeleteEbookRating, GetEbookRatings
|
||||
- GetEbookNotes, CreateEbookNote, GetEbookNote, UpdateEbookNote, DeleteEbookNote
|
||||
- GetEbookHighlights, CreateEbookHighlight, GetEbookHighlight, UpdateEbookHighlight, DeleteEbookHighlight
|
||||
- ✅ Removed ebook request types (CreateEbookRequest, UpdateEbookRequest, etc.)
|
||||
- ✅ Kept all media-items handlers
|
||||
- ✅ Kept all scanner and watch mode handlers
|
||||
|
||||
### Phase 5: Add New Admin Handlers ✅
|
||||
- ✅ Added CreateMediaItem (admin only, requires library_id)
|
||||
- ✅ Added UpdateMediaItem (admin only)
|
||||
- ✅ Added DeleteMediaItem (admin only)
|
||||
- ✅ Added request types (CreateMediaItemRequest, UpdateMediaItemRequest)
|
||||
- ✅ Uses MustGetAuthenticatedUser for safe context access
|
||||
- ✅ Validates admin role
|
||||
- ✅ Validates library exists before creating item
|
||||
|
||||
### Phase 6: Update Routes ✅
|
||||
- ✅ Removed ALL /api/ebooks routes from SetupRoutes()
|
||||
- ✅ Removed ebook progress, rating, notes, highlights routes
|
||||
- ✅ Added admin.POST/PUT/DELETE /api/media-items routes
|
||||
- ✅ Kept all media-items routes intact
|
||||
- ✅ Kept all scanner and watch mode routes
|
||||
- ✅ Routes now clean: only /api/media-* endpoints
|
||||
|
||||
## In Progress ⚠️
|
||||
|
||||
### Phase 7: Update Tests (CURRENT)
|
||||
**Status:** Ready to begin
|
||||
**Files to update:**
|
||||
- cmd/server/tests/integration_test.go
|
||||
- Rename "Ebooks" test group to "MediaItems"
|
||||
- Update API paths from /api/ebooks to /api/media-items
|
||||
- Test new admin Create/Update/Delete endpoints
|
||||
- Remove ebook-specific tests
|
||||
- Ensure all user/admin permissions still work correctly
|
||||
|
||||
### Phase 8: Final Build & Test
|
||||
**Status:** Pending Phase 7
|
||||
**Tasks:**
|
||||
- Rebuild containers with clean cache
|
||||
- Run integration tests
|
||||
- Verify all functionality works
|
||||
- Test in Bruno
|
||||
|
||||
## Progress Tracking
|
||||
|
||||
**Overall:** ~85% complete
|
||||
- Database layer: 100% ✅
|
||||
- Handler layer: 100% ✅
|
||||
- Routes: 100% ✅
|
||||
- Tests: 0%
|
||||
- Build: 0%
|
||||
|
||||
**Time Spent:** ~1.5 hours
|
||||
**Time Remaining:** ~20-30 minutes
|
||||
|
||||
## What Changed
|
||||
|
||||
### Removed
|
||||
- 5 backward compatibility database VIEWs
|
||||
- ~20 ebook-specific database queries
|
||||
- 23 ebook handler functions
|
||||
- 8 ebook request/response types
|
||||
- 25+ ebook API routes
|
||||
|
||||
### Added
|
||||
- 3 admin media-items database functions
|
||||
- 3 admin media-items handlers (Create, Update, Delete)
|
||||
- 2 request types for media-items
|
||||
- 3 admin API routes for media-items
|
||||
- All handlers now use MustGetAuthenticatedUser for safety
|
||||
|
||||
### End Result
|
||||
- **One unified API:** Only /api/media-items endpoints
|
||||
- **Clean database:** No backward compatibility views
|
||||
- **Simpler code:** No dual ebook/media-items systems
|
||||
- **Better features:** Media-items have more fields and functionality than ebooks had
|
||||
- **All features preserved:** Filtering, sorting, searching, ratings, progress, notes, highlights
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. Update integration tests (rename Ebooks → MediaItems)
|
||||
2. Remove ebook test cases, add admin media-item tests
|
||||
3. Rebuild containers
|
||||
4. Run all tests
|
||||
5. Final verification
|
||||
|
||||
## Notes
|
||||
|
||||
- Code compiles successfully ✅
|
||||
- All handlers use safe authentication ✅
|
||||
- All routes updated ✅
|
||||
- Ready for testing phase
|
||||
- Can be committed anytime now
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** Phase 6 complete - handlers and routes done
|
||||
**Next Action:** Update integration tests (Phase 7)
|
||||
**Status:** Ready for testing phase
|
||||
Reference in New Issue
Block a user