"""Türkiye saati yardımcıları.

DB'de her şey UTC tutulur (doğru karar), ama "bugün" kavramı kullanıcıya ve
fikstüre göre TÜRKİYE günüdür. UTC gününe göre hesap yapmak gece 21:00'den
sonra hatalı sonuç veriyordu: Türkiye'de akşam maçları sürerken UTC günü
bitiyor ve o maçlar "bugün" sayılmıyordu.

Türkiye kalıcı olarak UTC+3 (yaz saati uygulaması yok).
"""
from datetime import datetime, timedelta

TR_OFFSET = timedelta(hours=3)


def to_tr(dt: datetime) -> datetime:
    """UTC -> Türkiye saati."""
    return dt + TR_OFFSET


def to_utc(dt: datetime) -> datetime:
    """Türkiye saati -> UTC."""
    return dt - TR_OFFSET


def tr_now() -> datetime:
    return to_tr(datetime.utcnow())


def tr_day_bounds_utc(when: datetime | None = None) -> tuple[datetime, datetime]:
    """İçinde bulunulan Türkiye gününün başı ve sonu — UTC cinsinden."""
    now_tr = to_tr(when or datetime.utcnow())
    start_tr = now_tr.replace(hour=0, minute=0, second=0, microsecond=0)
    end_tr = start_tr + timedelta(days=1) - timedelta(seconds=1)
    return to_utc(start_tr), to_utc(end_tr)


def fmt_tr(dt: datetime | None, pattern: str = "%d.%m %H:%M") -> str:
    """UTC datetime'ı Türkiye saatiyle biçimlendir."""
    if not dt:
        return "—"
    return to_tr(dt).strftime(pattern)
