#!/usr/bin/env python3 """Backfill the openmeteo_rain table with the full 2021+ catchment history. Usage: uv run scripts/backfill_rain_db.py # DB from POSTGRES_* / .env uv run scripts/backfill_rain_db.py --db-url postgresql://... """ import argparse import logging import os import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) from src.config import database_url from src.ml.rain import backfill_db def main(argv=None) -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--db-url", default=None) args = parser.parse_args(argv) logging.basicConfig( level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s" ) connection_string = args.db_url or database_url() if not connection_string: print( "no database: set POSTGRES_CONNECTION_STRING or POSTGRES_*", file=sys.stderr ) return 1 from sqlalchemy import create_engine engine = create_engine(connection_string, pool_pre_ping=True) saved = backfill_db(engine) print(f"backfilled {saved} hourly rows into openmeteo_rain") return 0 if saved else 1 if __name__ == "__main__": sys.exit(main())