"""Export the stored Plytix attribute catalog/list.

CLI:
    python -m app.jobs.export_plytix_attributes --output plytix_attribute_catalog.csv
"""

from __future__ import annotations

import argparse
import csv
import sys


def run_export_plytix_attributes(output_path: str) -> dict:
    from db.plytix_attributes import export_plytix_attribute_catalog
    from db.session import get_session

    with get_session() as session:
        rows = export_plytix_attribute_catalog(session)

    fieldnames = [
        "source_label",
        "attribute_code",
        "label",
        "data_type",
        "group_name",
        "destination_hint",
        "is_required",
        "is_active",
        "imported_at",
    ]
    with open(output_path, "w", newline="", encoding="utf-8") as handle:
        writer = csv.DictWriter(handle, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(rows)

    return {"status": "ok", "output": output_path, "rows": len(rows)}


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

    result = run_export_plytix_attributes(args.output)
    print(f"Plytix attribute export complete: output={result['output']} rows={result['rows']}")
    return 0


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