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:
@@ -119,14 +119,6 @@ CREATE TABLE media_items (
|
|||||||
kobo_metadata JSONB
|
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 reading_progress table
|
||||||
CREATE TABLE reading_progress (
|
CREATE TABLE reading_progress (
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
@@ -158,15 +150,6 @@ CREATE TABLE reading_progress (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- Create reading_progress view for backward compatibility
|
-- 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 media_ratings table (replaces ebook_ratings)
|
||||||
CREATE TABLE media_ratings (
|
CREATE TABLE media_ratings (
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
@@ -337,35 +320,6 @@ CREATE TABLE reading_history (
|
|||||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
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 indexes for better query performance
|
||||||
CREATE INDEX idx_users_email ON users(email);
|
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
|
-- - 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
|
-- - Notes and highlights support position data (page:offset or CFI format) for precise location tracking
|
||||||
-- - Highlights can have associated notes for detailed annotations
|
-- - 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)
|
-- PERFORMANCE OPTIMIZATION (Phase 7)
|
||||||
|
|||||||
Reference in New Issue
Block a user