"""Create first admin (superuser). Usage:
    cd /path/to/kelly && python -m scripts.create_superuser --email admin@example.com --password 'SecurePass123'
"""
from __future__ import annotations

import argparse
import sys
from pathlib import Path

# Allow running without installing package
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))

from sqlalchemy.orm import Session

from app.database import SessionLocal, init_db
from app.models import User, UserRole
from app.security import hash_password


def main() -> None:
    parser = argparse.ArgumentParser(description="Create admin superuser")
    parser.add_argument("--email", required=True)
    parser.add_argument("--password", required=True)
    parser.add_argument("--full-name", default="Administrator")
    args = parser.parse_args()

    init_db()
    db: Session = SessionLocal()
    try:
        if db.query(User).filter(User.email == args.email).first():
            print("User with this email already exists.")
            sys.exit(1)
        u = User(
            email=args.email,
            hashed_password=hash_password(args.password),
            full_name=args.full_name,
            role=UserRole.admin,
            is_active=True,
        )
        db.add(u)
        db.commit()
        print(f"Admin created: {args.email}")
    finally:
        db.close()


if __name__ == "__main__":
    main()
