"""indeks pod sortowanie po dacie premiery z fallbackiem na date dodania Zgłoszenie 1df50de3 („hqporner: brak nowych scen"). Sceny były i ingest działał, tylko tuby daty premiery zwykle NIE podają: xhamster 99,2% scen bez daty, xnxx 97,7%, porntrex 95,8%, hqporner 93,5%, sxyprn 85,7%. Przy `release_date DESC NULLS LAST` wszystkie bezdatowe lądowały ZA datowanymi, więc 82 z 91 scen dodanych w hqporner przez tydzień siedziały za 3,4 tys. starszych pozycji i użytkownik widział pustkę. Sortujemy więc po dacie premiery, a gdy jej nie ma, po dniu trafienia sceny do katalogu. Sceny z prawdziwą datą (kanon z TPDB/StashDB) zachowują dotychczasową kolejność. Wyrażenie MUSI być immutable, żeby weszło do indeksu. `created_at::date` zależy od strefy czasowej sesji (stable, nie immutable), stąd jawne `AT TIME ZONE 'UTC'`. Musi też być IDENTYCZNE z `_effective_date_desc()` w `app/api/scenes.py`, inaczej planner indeksu nie użyje i wróci do pełnego skanu. Pomiar po założeniu: hqporner Index Scan bez sortowania, 0,49 s; sxyprn, xhamster i porntrex po 0,02 s, wszystkie z dzisiejszymi scenami na górze. `IF NOT EXISTS`, bo na produkcji założony od razu (CONCURRENTLY, bez blokowania ruchu). Revision ID: 0033_effective_date_idx Revises: 0032_origin_release_idx Create Date: 2026-08-20 """ from __future__ import annotations from alembic import op revision: str = "0033_effective_date_idx" down_revision: str | None = "0032_origin_release_idx" branch_labels = None depends_on = None def upgrade() -> None: op.execute( "CREATE INDEX IF NOT EXISTS ix_scenes_effective_date_desc ON scenes (" " (COALESCE(release_date, (created_at AT TIME ZONE 'UTC')::date)) DESC," " created_at DESC," " id DESC" ")" ) def downgrade() -> None: op.execute("DROP INDEX IF EXISTS ix_scenes_effective_date_desc")