- /favorites i /favorites/studios: liczniki w cache procesu (swiezy 5 min, potem odswiezanie w tle), mark_seen zeruje od razu; parametr counts=false dla ekranow, ktore chca tylko stan gwiazdki - licznik studiow idzie indeksem ix_scenes_studio_effective_date_desc (migracja 0038) i konczy po 200 scenach na studio: 10-25 s -> kilkanascie ms - okno licznika sortuje tak jak lista (data premiery albo dzien dodania), wczesniej rozjechane od 0033 - similar_scenes: pula z 4 najrzadszych tagow zamiast grupowania po wszystkich (do 5 s -> ponizej 0,4 s) - enrich-tags: tagi jednym zapytaniem po slugach i jeden INSERT - /scene-favorites: serializer wsadowy Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
"""Indeks pod liste scen studia i licznik "+N" ulubionych studiow.
|
|
|
|
Oba sortuja po dacie premiery albo, gdy jej nie ma, dniu trafienia do katalogu (to samo
|
|
wyrazenie co ix_scenes_effective_date_desc z 0033), w obrebie jednego studia. Bez tego
|
|
Postgres czytal WSZYSTKIE sceny studia (Brazzers ma ich dziesiatki tysiecy), sprawdzal
|
|
kazdej playback i sortowal, a licznik dla 209 ulubionych studiow trwal 10-25 s. Z tym
|
|
indeksem idzie po kolei i konczy po 200 widocznych scenach na studio.
|
|
|
|
CONCURRENTLY w autocommit_block, jak w 0035. Nieudany CONCURRENTLY zostawia indeks
|
|
INVALID; wtedy DROP INDEX i ponownie.
|
|
|
|
Revision ID: 0038_scenes_studio_effdate_idx
|
|
Revises: 0037_clip_feed
|
|
Create Date: 2026-09-15
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
|
|
revision = "0038_scenes_studio_effdate_idx"
|
|
down_revision: str | None = "0037_clip_feed"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
with op.get_context().autocommit_block():
|
|
op.execute(
|
|
"CREATE INDEX CONCURRENTLY IF NOT EXISTS ix_scenes_studio_effective_date_desc "
|
|
"ON scenes (studio_id, COALESCE(release_date, (created_at AT TIME ZONE 'UTC')::date) DESC, "
|
|
"created_at DESC, id DESC) WHERE studio_id IS NOT NULL"
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
with op.get_context().autocommit_block():
|
|
op.execute("DROP INDEX CONCURRENTLY IF EXISTS ix_scenes_studio_effective_date_desc")
|