import argparse
import sys

from predict import run_predictions
from train_model import discover_app_ids


def execute_daily_predictions(app_id: int | None = None):
    print("Initializing Daily Batch Inference...")

    if app_id is not None:
        run_predictions(app_id)
        return

    app_ids = discover_app_ids()
    if not app_ids:
        print("No app_ids found in the ClickHouse churn feature store.")
        return

    for discovered_app_id in app_ids:
        run_predictions(int(discovered_app_id))


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Legacy wrapper for churn batch inference.")
    parser.add_argument("--app-id", type=int, default=None, help="Optional app_id to predict")
    args = parser.parse_args()

    if args.app_id is not None and args.app_id <= 0:
        print("Error: --app-id must be positive.", file=sys.stderr)
        sys.exit(1)

    execute_daily_predictions(args.app_id)
