-- Add Base Performance Indexes
-- These are the essential performance indexes that were in the original schema dump
-- but missing from the InitialCreate migration
-- Run this if migration doesn't apply automatically
\pset pager off

\echo 'Adding base performance indexes...';

-- ============================================================================
-- BaseItems Performance Indexes
-- ============================================================================

\echo 'Creating BaseItems performance indexes...';

CREATE INDEX IF NOT EXISTS baseitems_communityrating_idx 
ON library."BaseItems" ("CommunityRating" DESC);

CREATE INDEX IF NOT EXISTS baseitems_datecreated_idx 
ON library."BaseItems" ("DateCreated" DESC);

CREATE INDEX IF NOT EXISTS baseitems_datemodified_idx 
ON library."BaseItems" ("DateModified" DESC);

CREATE INDEX IF NOT EXISTS baseitems_parentid_idx 
ON library."BaseItems" ("ParentId", "Type");

CREATE INDEX IF NOT EXISTS baseitems_premieredate_idx 
ON library."BaseItems" ("PremiereDate" DESC);

CREATE INDEX IF NOT EXISTS baseitems_productionyear_idx 
ON library."BaseItems" ("ProductionYear" DESC);

CREATE INDEX IF NOT EXISTS baseitems_seriespresentationuniquekey_idx 
ON library."BaseItems" ("SeriesPresentationUniqueKey", "IndexNumber", "ParentIndexNumber");

CREATE INDEX IF NOT EXISTS baseitems_sortname_idx 
ON library."BaseItems" ("SortName");

CREATE INDEX IF NOT EXISTS baseitems_topparentid_idx 
ON library."BaseItems" ("TopParentId", "Type");

\echo '✓ BaseItems indexes created';

-- ============================================================================
-- BaseItemProviders Performance Indexes
-- ============================================================================

\echo 'Creating BaseItemProviders performance indexes...';

CREATE INDEX IF NOT EXISTS baseitemproviders_providerid_idx 
ON library."BaseItemProviders" ("ProviderId", "ItemId");

CREATE INDEX IF NOT EXISTS baseitemproviders_providervalue_idx 
ON library."BaseItemProviders" ("ProviderValue", "ProviderId");

\echo '✓ BaseItemProviders indexes created';

-- ============================================================================
-- MediaStreamInfos Performance Indexes
-- ============================================================================

\echo 'Creating MediaStreamInfos performance indexes...';

CREATE INDEX IF NOT EXISTS mediastreaminfos_codec_idx 
ON library."MediaStreamInfos" ("Codec");

CREATE INDEX IF NOT EXISTS mediastreaminfos_itemid_idx 
ON library."MediaStreamInfos" ("ItemId", "StreamType");

\echo '✓ MediaStreamInfos indexes created';

-- ============================================================================
-- PeopleBaseItemMap Performance Indexes
-- ============================================================================

\echo 'Creating PeopleBaseItemMap performance indexes...';

CREATE INDEX IF NOT EXISTS peoplebaseitemmap_itemid_idx 
ON library."PeopleBaseItemMap" ("ItemId", "PeopleId");

CREATE INDEX IF NOT EXISTS peoplebaseitemmap_peopleid_idx 
ON library."PeopleBaseItemMap" ("PeopleId", "ItemId");

\echo '✓ PeopleBaseItemMap indexes created';

-- ============================================================================
-- UserData Performance Indexes
-- ============================================================================

\echo 'Creating UserData performance indexes...';

CREATE INDEX IF NOT EXISTS userdata_lastplayeddate_idx 
ON library."UserData" ("LastPlayedDate" DESC);

CREATE INDEX IF NOT EXISTS userdata_userid_isfavorite_idx 
ON library."UserData" ("UserId", "IsFavorite");

CREATE INDEX IF NOT EXISTS userdata_userid_played_idx 
ON library."UserData" ("UserId", "Played");

\echo '✓ UserData indexes created';

-- ============================================================================
-- Update Statistics
-- ============================================================================

\echo 'Updating table statistics...';

ANALYZE library."BaseItems";
ANALYZE library."BaseItemProviders";
ANALYZE library."MediaStreamInfos";
ANALYZE library."PeopleBaseItemMap";
ANALYZE library."UserData";

\echo '';
\echo '========================================';
\echo '✓ Base Performance Indexes Created!';
\echo '========================================';
\echo '';
\echo 'Created 18 base performance indexes:';
\echo '  - 9 on BaseItems';
\echo '  - 2 on BaseItemProviders';
\echo '  - 2 on MediaStreamInfos';
\echo '  - 2 on PeopleBaseItemMap';
\echo '  - 3 on UserData';
\echo '';
\echo 'These indexes are essential for good performance.';
\echo 'Restart Jellyfin to see improvements.';
