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
127 lines
4.1 KiB
Markdown
127 lines
4.1 KiB
Markdown
# 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
|