"""Create user 'iklaric' (role: Nabava) with a generated 8-char password."""
import secrets
import bcrypt
from sqlalchemy import text
from backend.models.database import SessionLocal

USERNAME = "iklaric"
DISPLAY  = "iklaric@polleosport.com"
ROLE     = "Nabava"

# 8-char alnum, no ambiguous chars
ALPHABET = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789"
password = "".join(secrets.choice(ALPHABET) for _ in range(8))
pw_hash  = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt()).decode("utf-8")

db = SessionLocal()
try:
    existing = db.execute(
        text("SELECT id FROM users WHERE username = :u"), {"u": USERNAME},
    ).scalar()
    if existing:
        db.execute(text("""
            UPDATE users SET password_hash = :ph, display_name = :dn,
                              role = :r, active = TRUE
             WHERE username = :u
        """), {"ph": pw_hash, "dn": DISPLAY, "r": ROLE, "u": USERNAME})
        action = "UPDATED"
    else:
        db.execute(text("""
            INSERT INTO users (username, display_name, password_hash, role, active)
            VALUES (:u, :dn, :ph, :r, TRUE)
        """), {"u": USERNAME, "dn": DISPLAY, "ph": pw_hash, "r": ROLE})
        action = "CREATED"
    db.commit()
    row = db.execute(text(
        "SELECT id, username, display_name, role, active FROM users WHERE username = :u"
    ), {"u": USERNAME}).mappings().first()
    print(f"{action}: id={row['id']}  username={row['username']}  "
          f"display={row['display_name']}  role={row['role']}  active={row['active']}")
    print(f"\nPASSWORD: {password}")
    print(f"\nLogin URL:  http://localhost:5173/")
    print(f"Username:   {USERNAME}")
    print(f"Password:   {password}")
finally:
    db.close()
