from loguru import logger from ..config import QUERY_PATHS from ..db import get_rdb from ..db.queries import QueryLoader def run_update() -> str | None: logger.info("Starting discovery update") rdb = get_rdb() ql = QueryLoader() data = rdb.query(ql.load( QUERY_PATHS.get_dates, main="prod_eu_analytics.summer_playlists_discovery_hyper", source_1="prod_eu_analytics.discoverydash_playlist_main", source_2="prod_eu_analytics.discoverydash_playlist_main", )) current_max = data["last_processed"][0] available_max = data["last_available"][0] if current_max is None or available_max is None: logger.warning("Could not determine date range") return None if not available_max > current_max: logger.info("No new data") return None logger.info(f"New data available up to {available_max} (current: {current_max})") logger.info("Rebuilding discovery hyper table") status = rdb.execute(ql.load(QUERY_PATHS.make_discovery_hyper)) if not status: logger.error("Failed to rebuild discovery hyper table") return None logger.success(f"Discovery updated to {available_max}") return str(available_max)