refactor: remove all backward compatibility database views

Removed all 5 backward compatibility views from database schema:

1. ebooks view (lines 122-128)
   - Old API: /api/ebooks
   - Replaced by: media_items table with library_type filter

2. ebook_reading_progress view (lines 160-168)
   - Old API: mapped ebook_id alias
   - All progress routes now use reading_progress table directly

3. ebook_ratings view (lines 323-331)
   - Old API: /api/ebooks/:id/rating
   - Replaced by: media_ratings table

4. ebook_notes view (lines 333-341)
   - Old API: /api/ebooks/:id/notes
   - Replaced by: media_notes table

5. ebook_highlights view (lines 343-351)
   - Old API: /api/ebooks/:id/highlights
   - Replaced by: media_highlights table

Verification:
- No code queries these views directly (all queries use base tables)
- No handlers reference these views
- Bruno API tests use /api/media-items endpoints
- Application compiles successfully

This completes Phase 4 of legacy code cleanup.
All backward compatibility layers removed, codebase uses base tables directly.
This commit is contained in:
2026-02-01 15:18:09 -05:00
parent 8d7a7a8045
commit d0d86f19d6
+1 -47
View File
@@ -119,14 +119,6 @@ CREATE TABLE media_items (
kobo_metadata JSONB
);
-- Create ebooks view for backward compatibility
CREATE VIEW ebooks AS
SELECT mi.*
FROM media_items mi
JOIN libraries l ON mi.library_id = l.id
JOIN library_types lt ON l.library_type_id = lt.id
WHERE lt.name = 'ebooks';
-- Create reading_progress table
CREATE TABLE reading_progress (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
@@ -158,15 +150,6 @@ CREATE TABLE reading_progress (
);
-- Create reading_progress view for backward compatibility
CREATE VIEW ebook_reading_progress AS
SELECT rp.*,
mi.id as ebook_id -- Map media_item_id to ebook_id for compatibility
FROM reading_progress rp
JOIN media_items mi ON rp.media_item_id = mi.id
JOIN libraries l ON mi.library_id = l.id
JOIN library_types lt ON l.library_type_id = lt.id
WHERE lt.name = 'ebooks';
-- Create media_ratings table (replaces ebook_ratings)
CREATE TABLE media_ratings (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
@@ -337,35 +320,6 @@ CREATE TABLE reading_history (
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Create ebook_ratings view for backward compatibility
CREATE VIEW ebook_ratings AS
SELECT mr.*,
mi.id as ebook_id -- Map media_item_id to ebook_id for compatibility
FROM media_ratings mr
JOIN media_items mi ON mr.media_item_id = mi.id
JOIN libraries l ON mi.library_id = l.id
JOIN library_types lt ON l.library_type_id = lt.id
WHERE lt.name = 'ebooks';
-- Create ebook_notes view for backward compatibility
CREATE VIEW ebook_notes AS
SELECT mn.*,
mi.id as ebook_id -- Map media_item_id to ebook_id for compatibility
FROM media_notes mn
JOIN media_items mi ON mn.media_item_id = mi.id
JOIN libraries l ON mi.library_id = l.id
JOIN library_types lt ON l.library_type_id = lt.id
WHERE lt.name = 'ebooks';
-- Create ebook_highlights view for backward compatibility
CREATE VIEW ebook_highlights AS
SELECT mh.*,
mi.id as ebook_id -- Map media_item_id to ebook_id for compatibility
FROM media_highlights mh
JOIN media_items mi ON mh.media_item_id = mi.id
JOIN libraries l ON mi.library_id = l.id
JOIN library_types lt ON l.library_type_id = lt.id
WHERE lt.name = 'ebooks';
-- Create indexes for better query performance
CREATE INDEX idx_users_email ON users(email);
@@ -494,7 +448,7 @@ COMMENT ON COLUMN media_items.google_books_id IS 'Google Books identifier for in
-- - Library visibility is controlled through library_visibility table - admins can hide/show libraries per user
-- - Notes and highlights support position data (page:offset or CFI format) for precise location tracking
-- - Highlights can have associated notes for detailed annotations
-- - Backward compatibility views (ebooks, ebook_ratings, ebook_reading_progress, ebook_notes, ebook_highlights) maintain existing API contracts
-- NOTE: All backward compatibility views (ebooks, ebook_ratings, ebook_reading_progress, ebook_notes, ebook_highlights) have been removed
-- ============================================
-- PERFORMANCE OPTIMIZATION (Phase 7)