Phase 1: Add enhanced database fields and sorting
- Add 9 new fields to media_items table (language, edition, page_count, goodreads_id, openlibrary_id, google_books_id, copyright_year, genre, subjects) - Add indexes for new fields (language, genre, page_count, copyright_year, series_order, date_published) - Add ListMediaItemsSorted SQL query for dynamic sorting - Update ListMediaItems handler to process sort parameter - Support 16 sorting options (title, author, created_at, date_published, copyright_year, page_count, genre, series) - Add /api/media-items/filtered endpoint for advanced filtering - Register new filtered endpoint in routes
This commit is contained in:
@@ -107,6 +107,15 @@ CREATE TABLE media_items (
|
||||
date_published DATE,
|
||||
publisher VARCHAR(255),
|
||||
contributors TEXT,
|
||||
language VARCHAR(10) DEFAULT 'en',
|
||||
edition VARCHAR(255),
|
||||
page_count INTEGER,
|
||||
goodreads_id VARCHAR(20),
|
||||
openlibrary_id VARCHAR(100),
|
||||
google_books_id VARCHAR(100),
|
||||
copyright_year INTEGER,
|
||||
genre VARCHAR(100),
|
||||
subjects TEXT[],
|
||||
added_by_admin_id UUID REFERENCES users(id) ON DELETE SET NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
@@ -246,6 +255,12 @@ CREATE INDEX idx_media_items_title ON media_items(title);
|
||||
CREATE INDEX idx_media_items_author ON media_items(author);
|
||||
CREATE INDEX idx_media_items_library_id ON media_items(library_id);
|
||||
CREATE INDEX idx_media_items_added_by_admin_id ON media_items(added_by_admin_id);
|
||||
CREATE INDEX idx_media_items_language ON media_items(language);
|
||||
CREATE INDEX idx_media_items_genre ON media_items(genre);
|
||||
CREATE INDEX idx_media_items_page_count ON media_items(page_count);
|
||||
CREATE INDEX idx_media_items_copyright_year ON media_items(copyright_year);
|
||||
CREATE INDEX idx_media_items_series_order ON media_items(series, series_number);
|
||||
CREATE INDEX idx_media_items_date_published ON media_items(date_published);
|
||||
|
||||
-- GIN indexes for fast fuzzy search using pg_trgm
|
||||
CREATE INDEX idx_media_items_title_gin ON media_items USING gin (title gin_trgm_ops);
|
||||
|
||||
Reference in New Issue
Block a user