"""playback_sources.origin: rename `pornapp:*` → `tube:*`

Revision ID: 0011_origin_pornapp_to_tube
Revises: 0010_favorite_scenes
Create Date: 2026-05-07

Po usunięciu zależności od porn-app.com API, prefix `pornapp:` w `playback_sources.origin`
jest myląca historyczna nazwa — discovery + stream resolve teraz idzie bezpośrednio przez
direct scrapery i `app.extractors`. Zmieniamy prefix na neutralny `tube:` żeby nazwa
odzwierciedlała architekturę (sitetag pozostaje bez zmian — `tube:hqpornercom` itd.).

Idempotent: WHERE klauzula zapobiega podwójnemu rename. Operuje też na
`movie_playback_sources` (analogiczna kolumna z M5 movies).

Backend `app/api/playback.py` rozumie oba prefixy (`pornapp:` legacy + `tube:`)
podczas okresu transition — po tej migracji można pozostawić tylko `tube:` sprawdzenie.
"""
from collections.abc import Sequence

import sqlalchemy as sa
from alembic import op

revision: str = "0011_origin_pornapp_to_tube"
down_revision: str | None = "0010_favorite_scenes"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def upgrade() -> None:
    op.execute(
        sa.text(
            "UPDATE playback_sources "
            "SET origin = 'tube:' || SUBSTRING(origin FROM 9) "
            "WHERE origin LIKE 'pornapp:%'"
        )
    )
    op.execute(
        sa.text(
            "UPDATE movie_playback_sources "
            "SET origin = 'tube:' || SUBSTRING(origin FROM 9) "
            "WHERE origin LIKE 'pornapp:%'"
        )
    )


def downgrade() -> None:
    op.execute(
        sa.text(
            "UPDATE playback_sources "
            "SET origin = 'pornapp:' || SUBSTRING(origin FROM 6) "
            "WHERE origin LIKE 'tube:%'"
        )
    )
    op.execute(
        sa.text(
            "UPDATE movie_playback_sources "
            "SET origin = 'pornapp:' || SUBSTRING(origin FROM 6) "
            "WHERE origin LIKE 'tube:%'"
        )
    )
