from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def reindex_orderno():
    """
    Для тестирования патча: ( cd /opt/eva-app; python3 -m patch.202505271631_reindex_orderno )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    print('Запуск патча reindex_orderno')
    session = models.CmfNotify.dp.data_driver.Session()
    session.execute("""
        WITH ranked AS (
            SELECT
                id,
                person_id,
                ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY orderno) AS rn
            FROM cmf_notify
        )
        UPDATE cmf_notify
        SET orderno = ranked.rn * 1000
        FROM ranked
        WHERE cmf_notify.id = ranked.id
    """)
    session.commit()


if __name__ == "__main__":
    reindex_orderno()
