"""
mark_cache_unwanted.py — Označí celé adresáře Tower/appdata a Tower/Sabnzbd
jako nechceme (cache PhotoPrism/Immich + usenet download cache).

wanted=FALSE, category='Odpad-cache'

Idempotentní: díky filtru `category IS DISTINCT FROM 'Odpad-cache'` přepíše
jen řádky, které ještě nejsou označené (vč. těch, co camera-rules omylem
označily jako Rodina — jde o duplicitní cache kopie, ne originály).

Jediná DB session, autocommit — žádné paralelní běhy (deadlock).
"""
import sys
import psycopg2

sys.stdout.reconfigure(encoding="utf-8")

DB = dict(host="192.168.1.76", port=5432, user="vladimir.buzalka",
          password="Vlado7309208104++", database="fotky_buzalkovi")

DIRS = [
    ("Tower/appdata  (PhotoPrism/Immich cache)",
     "/mnt/user/ZalohaVsechObrazku/Tower/appdata%"),
    ("Tower/Sabnzbd  (usenet download cache)",
     "/mnt/user/ZalohaVsechObrazku/Tower/Sabnzbd%"),
]

conn = psycopg2.connect(**DB)
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
cur = conn.cursor()

total = 0
for popis, like in DIRS:
    cur.execute("""
        UPDATE photos p
        SET wanted   = FALSE,
            category = 'Odpad-cache'
        FROM zaloha_obrazku z
        WHERE p.zaloha_id = z.id
          AND z.cesta_zalohy LIKE %s
          AND p.category IS DISTINCT FROM 'Odpad-cache'
    """, (like,))
    print(f"  {popis}: {cur.rowcount:,} řádků aktualizováno")
    total += cur.rowcount

print(f"\nHotovo. Celkem aktualizováno: {total:,} řádků.")
conn.close()
