from loguru import logger from ..config import QUERY_PATHS, WAREHOUSES from ..db import get_snw from ..db.queries import QueryLoader def _check_run(snw, ql: QueryLoader) -> bool: df = snw.query(ql.load(QUERY_PATHS.run_check)) logger.info(f"Previous run timestamp: {df['previous_run_timestamp'][0]}") logger.info(f"Latest override added: {df['latest_add_timestamp'][0]}") logger.info(f"Run: {df['run'][0]}") return bool(df["run"][0]) def run_overrides_check() -> None: logger.info("Checking for new overrides and artist profiles") snw = get_snw(WAREHOUSES["small"]) ql = QueryLoader() if not _check_run(snw, ql): logger.info("No new overrides — nothing to do") return logger.info("Creating staging table (overrides)") snw.execute(ql.load(QUERY_PATHS.staging_create_overrides)) rowcount_stage = snw.query(ql.load(QUERY_PATHS.staging_rowcount))["rowcount"][0] logger.info(f"{rowcount_stage} rows in staging table") logger.info("Truncating main table") snw.execute(ql.load(QUERY_PATHS.main_truncate)) rowcount_main = snw.query(ql.load(QUERY_PATHS.main_rowcount))["rowcount"][0] if rowcount_main != 0: logger.error(f"Truncation failed, {rowcount_main} rows remain — aborting") return logger.info("Inserting staging into main table") snw.execute(ql.load(QUERY_PATHS.main_insert)) logger.info("Updating last run timestamp") snw.execute(ql.load(QUERY_PATHS.run_update)) rowcount_main = snw.query(ql.load(QUERY_PATHS.main_rowcount))["rowcount"][0] if rowcount_main != rowcount_stage: logger.error( f"Row count mismatch: expected {rowcount_stage}, got {rowcount_main}" ) else: logger.success("Overrides check completed successfully")