"""Export canonical-to-channel attribute aliases to CSV.

CLI:
    python -m app.jobs.export_channel_aliases --output channel_aliases.csv
"""

from __future__ import annotations

import argparse
import sys

import pandas as pd


def run_export_channel_aliases(output_path: str) -> dict:
    from db.channel_aliases import export_channel_attribute_aliases
    from db.session import get_session

    with get_session() as session:
        rows = export_channel_attribute_aliases(session)
    pd.DataFrame(rows).to_csv(output_path, index=False)
    return {"status": "ok", "output": output_path, "rows": len(rows)}


def main() -> int:
    parser = argparse.ArgumentParser(description="Export canonical-to-channel attribute aliases")
    parser.add_argument("--output", required=True, help="Output CSV path")
    args = parser.parse_args()

    result = run_export_channel_aliases(args.output)
    if result.get("status") != "ok":
        print(result.get("error", "unknown error"), file=sys.stderr)
        return 1
    print(f"Channel alias export complete: output={result['output']} rows={result['rows']}")
    return 0


if __name__ == "__main__":
    sys.exit(main())
