#!/usr/bin/env python3 """LEGACY — не входит в пайплайн runner.sh с версии 1.0.0. Проставляет marked_to_publication = 1 видимым событиям (is_visible = 1), у которых флаг ещё не установлен. Запуск вручную из корня проекта: ./venv/bin/python tools/legacy/evt_prefetch.py """ import os import mysql.connector from mysql.connector import Error from dotenv import load_dotenv _PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) load_dotenv(os.path.join(_PROJECT_ROOT, ".env")) load_dotenv() MDB_HOST = os.getenv('MDB_HOST') MDB_USER = os.getenv('MDB_USER') MDB_PW = os.getenv('MDB_PW') MDBASE = os.getenv('MDBASE') def prefetch_all_events(): """ Проверяет записи в таблице events и устанавливает флаг marked_to_publication для записей, которые: - имеют флаг is_visible = 1 - не имеют флага marked_to_publication = 1 """ try: connection = mysql.connector.connect( host=MDB_HOST, user=MDB_USER, password=MDB_PW, database=MDBASE ) cursor_temp = connection.cursor() cursor_temp.execute("SET time_zone = '+00:00'") cursor_temp.close() cursor = connection.cursor() update_query = """ UPDATE events SET marked_to_publication = 1 WHERE is_visible = 1 AND marked_to_publication = 0 """ cursor.execute(update_query) updated_count = cursor.rowcount connection.commit() print(f"Обновлено записей: {updated_count}") return updated_count except Error as e: print(f"Ошибка базы данных: {e}") if 'connection' in locals() and connection.is_connected(): connection.rollback() return 0 except Exception as e: print(f"Общая ошибка: {e}") return 0 finally: if 'connection' in locals() and connection.is_connected(): cursor.close() connection.close() if __name__ == "__main__": prefetch_all_events()