"""ينشئ حساب الأدمن (مرة واحدة). شغّله من Terminal داخل بيئة التطبيق:
    python create_admin.py
"""
import getpass

from werkzeug.security import generate_password_hash

from app import create_app
from db import execute, get_db, query_one
from utils import normalize_phone, normalize_username


def main():
    app = create_app()
    with app.app_context():
        name = input("Admin full name: ").strip()
        username = normalize_username(input("Admin username (english): "))
        phone = normalize_phone(input("Admin phone (optional): ") or None)
        password = getpass.getpass("Password (min 8 chars): ")
        if getpass.getpass("Repeat password: ") != password or len(password) < 8:
            raise SystemExit("Passwords do not match or too short.")
        if query_one("SELECT id FROM users WHERE username=%s", (username,)):
            raise SystemExit("Username already exists.")
        execute("INSERT INTO users (role, full_name, username, phone, password_hash) "
                "VALUES ('admin',%s,%s,%s,%s)", (name, username, phone, generate_password_hash(password)))
        get_db().commit()
        print("Admin created. Login at /admin/login")


if __name__ == "__main__":
    main()
