From d0d86f19d6db8b99943a164e89d9a0ca4d20abb4 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Sun, 1 Feb 2026 15:18:09 -0500 Subject: [PATCH] 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. --- database/schema/schema.sql | 48 +------------------------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/database/schema/schema.sql b/database/schema/schema.sql index 64c830a..95737d9 100644 --- a/database/schema/schema.sql +++ b/database/schema/schema.sql @@ -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)