diff --git a/READER_IMPLEMENTATION_PLAN.md b/READER_IMPLEMENTATION_PLAN.md index 9cafa62..3250e69 100644 --- a/READER_IMPLEMENTATION_PLAN.md +++ b/READER_IMPLEMENTATION_PLAN.md @@ -693,7 +693,7 @@ Real-time sync via WebSocket (reuse existing system) ```sql -- Panel detection data -CREATE TABLE panel_data ( +CREATE TABLE IF NOT EXISTS panel_data ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), media_item_id UUID NOT NULL REFERENCES media_items(id) ON DELETE CASCADE, page_number INTEGER NOT NULL, @@ -704,10 +704,10 @@ CREATE TABLE panel_data ( UNIQUE(media_item_id, page_number) ); -CREATE INDEX idx_panel_data_media_item ON panel_data(media_item_id); +CREATE INDEX IF NOT EXISTS idx_panel_data_media_item ON panel_data(media_item_id); -- Reading speed tracking -CREATE TABLE reading_speed ( +CREATE TABLE IF NOT EXISTS reading_speed ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, media_item_id UUID NOT NULL REFERENCES media_items(id) ON DELETE CASCADE, @@ -720,11 +720,11 @@ CREATE TABLE reading_speed ( UNIQUE(user_id, media_item_id) ); -CREATE INDEX idx_reading_speed_user ON reading_speed(user_id); -CREATE INDEX idx_reading_speed_item ON reading_speed(media_item_id); +CREATE INDEX IF NOT EXISTS idx_reading_speed_user ON reading_speed(user_id); +CREATE INDEX IF NOT EXISTS idx_reading_speed_item ON reading_speed(media_item_id); -- Dictionary cache (for offline use) -CREATE TABLE dictionary_cache ( +CREATE TABLE IF NOT EXISTS dictionary_cache ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), word VARCHAR(100) NOT NULL UNIQUE, definition TEXT NOT NULL, @@ -735,10 +735,10 @@ CREATE TABLE dictionary_cache ( accessed_at TIMESTAMPTZ DEFAULT NOW() ); -CREATE INDEX idx_dictionary_word ON dictionary_cache(word); +CREATE INDEX IF NOT EXISTS idx_dictionary_word ON dictionary_cache(word); -- Reader settings (per-user preferences) -CREATE TABLE reader_settings ( +CREATE TABLE IF NOT EXISTS reader_settings ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, setting_key VARCHAR(50) NOT NULL, @@ -747,10 +747,10 @@ CREATE TABLE reader_settings ( UNIQUE(user_id, setting_key) ); -CREATE INDEX idx_reader_settings_user ON reader_settings(user_id); +CREATE INDEX IF NOT EXISTS idx_reader_settings_user ON reader_settings(user_id); -- PDF bookmarks (custom user bookmarks) -CREATE TABLE media_bookmarks ( +CREATE TABLE IF NOT EXISTS media_bookmarks ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), media_item_id UUID NOT NULL REFERENCES media_items(id) ON DELETE CASCADE, user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, @@ -763,8 +763,8 @@ CREATE TABLE media_bookmarks ( UNIQUE(media_item_id, user_id, COALESCE(page_number, 0), COALESCE(chapter_number, 0)) ); -CREATE INDEX idx_media_bookmarks_media ON media_bookmarks(media_item_id); -CREATE INDEX idx_media_bookmarks_user ON media_bookmarks(user_id); +CREATE INDEX IF NOT EXISTS idx_media_bookmarks_media ON media_bookmarks(media_item_id); +CREATE INDEX IF NOT EXISTS idx_media_bookmarks_user ON media_bookmarks(user_id); ``` ### 2.2 Alter Existing Tables