feat: add Kobo shelf and entitlements tables to schema

This commit is contained in:
2026-01-31 00:29:36 -05:00
parent 0a44bc130e
commit c17b42bf83
+49 -1
View File
@@ -110,7 +110,12 @@ CREATE TABLE media_items (
is_reflowable BOOLEAN DEFAULT TRUE,
has_fixed_layout BOOLEAN DEFAULT FALSE,
total_characters BIGINT,
chapter_count INTEGER
chapter_count INTEGER,
-- Kobo-Specific Metadata (Phase 4)
entitlement_id VARCHAR(255) UNIQUE,
revision_number INTEGER DEFAULT 1,
kobo_content_id VARCHAR(255),
kobo_metadata JSONB
);
-- Create ebooks view for backward compatibility
@@ -271,6 +276,49 @@ CREATE TABLE sync_conflicts (
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- ============================================
-- KOBO SHELF MANAGEMENT (Phase 4)
-- ============================================
CREATE TABLE kobo_shelves (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
device_id UUID NOT NULL REFERENCES devices(id) ON DELETE CASCADE,
media_item_id UUID NOT NULL REFERENCES media_items(id) ON DELETE CASCADE,
shelf_name VARCHAR(100) DEFAULT 'Default',
shelf_position INTEGER DEFAULT 0,
added_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
last_synced_at TIMESTAMP WITH TIME ZONE,
UNIQUE(device_id, media_item_id)
);
CREATE INDEX idx_kobo_shelves_device_id ON kobo_shelves(device_id);
CREATE INDEX idx_kobo_shelves_media_item_id ON kobo_shelves(media_item_id);
CREATE INDEX idx_kobo_shelves_shelf_name ON kobo_shelves(shelf_name);
-- ============================================
-- KOBO ENTITLEMENTS TRACKING (Phase 4)
-- ============================================
CREATE TABLE kobo_entitlements (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
device_id UUID NOT NULL REFERENCES devices(id) ON DELETE CASCADE,
media_item_id UUID NOT NULL REFERENCES media_items(id) ON DELETE CASCADE,
entitlement_id VARCHAR(255) NOT NULL,
content_id VARCHAR(255) NOT NULL,
revision_number INTEGER DEFAULT 1,
purchase_date TIMESTAMP WITH TIME ZONE,
accession_date TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
book_status VARCHAR(20) DEFAULT 'installed',
sync_status VARCHAR(20) DEFAULT 'synced',
kobo_metadata JSONB,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
UNIQUE(device_id, entitlement_id)
);
CREATE INDEX idx_kobo_entitlements_device_id ON kobo_entitlements(device_id);
CREATE INDEX idx_kobo_entitlements_media_item_id ON kobo_entitlements(media_item_id);
CREATE INDEX idx_kobo_entitlements_entitlement_id ON kobo_entitlements(entitlement_id);
CREATE INDEX idx_kobo_entitlements_content_id ON kobo_entitlements(content_id);
-- ============================================
-- READING HISTORY (Phase 1)
-- ============================================