"""Deshace en D1 las sustituciones de la segunda opinion, poniendo cada
referencia como esta AHORA en el repo (que ya esta revertido y es la fuente).

Se hace por referencia y con limite de palabra: para cada par (a,b) aplicado,
se cuenta cuantas veces aparece 'a' en el fichero del repo; si el repo tiene 'a'
y D1 tiene 'b', se devuelve 'b' -> 'a'.
"""
import json,re,os,sys,subprocess,pathlib
HERE=pathlib.Path(__file__).resolve().parent
REPO=pathlib.Path('/Users/jaganat/git_projects/vedabase-original')
sys.path.insert(0,str(HERE))
from sincronizar_masivo import ref_de,d1,q,sub
datos=json.load(open(HERE/'ultimas_grafias_segunda.json'))
ok=fal=0
for fich,pares in sorted(datos.items()):
    ref=ref_de(fich)
    p=REPO/fich
    if not ref or not p.exists(): continue
    repo_txt=p.read_text(encoding='utf-8')
    filas=d1(f"SELECT COALESCE(purport,'') p, COALESCE(translation,'') t, COALESCE(synonyms,'') s "
             f"FROM verses WHERE ref={q(ref)} AND lang='en'",js=True)
    if not filas: fal+=1; continue
    r=filas[0]; sets=[]
    for campo,val in (('purport',r['p']),('translation',r['t']),('synonyms',r['s'])):
        nuevo=val; tot=0
        for a,b in pares:
            # solo si el repo conserva la forma original
            if re.search(rf'\b{re.escape(a)}\b',repo_txt,re.I):
                nuevo,c=sub(nuevo,b,a); tot+=c
        if tot: sets.append(f"{campo}={q(nuevo)}")
    if not sets: ok+=1; continue
    if d1(f"UPDATE verses SET {', '.join(sets)} WHERE ref={q(ref)} AND lang='en'"): ok+=1
    else: fal+=1; print('  FALLO',ref)
print(f'referencias devueltas: {ok} | fallos: {fal}')
