#!/usr/bin/env python3
"""
Create the first admin user if no users exist.
Run from backend directory: python scripts/seed_admin.py
Or: PYTHONPATH=. python scripts/seed_admin.py

Environment:
  SEED_ADMIN_USERNAME  (default: admin)
  SEED_ADMIN_PASSWORD  (default: admin123)
  DATABASE_URL         (must point to MySQL or SQLite with app database)
"""
import os
import sys

# Ensure backend/app is on path when run as scripts/seed_admin.py
backend_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if backend_dir not in sys.path:
    sys.path.insert(0, backend_dir)

from dotenv import load_dotenv
root_dir = os.path.dirname(backend_dir)
load_dotenv(os.path.join(root_dir, ".env"))
if not os.getenv("DATABASE_URL"):
    load_dotenv(os.path.join(backend_dir, ".env"))

from app.database import SessionLocal, init_db
from app.models import User
from passlib.context import CryptContext

pwd_ctx = CryptContext(schemes=["bcrypt"], deprecated="auto")

def main():
    init_db()
    db = SessionLocal()
    try:
        count = db.query(User).count()
        if count > 0:
            print("Users already exist. Skipping seed. Use Admin panel to create more users.")
            return
        username = os.getenv("SEED_ADMIN_USERNAME", "admin")
        password = os.getenv("SEED_ADMIN_PASSWORD", "admin123")
        user = User(
            username=username,
            password_hash=pwd_ctx.hash(password),
            role="admin",
        )
        db.add(user)
        db.commit()
        print(f"Created initial admin user: {username}")
        print("Change the password after first login via Admin > Users (or set SEED_ADMIN_PASSWORD).")
    finally:
        db.close()

if __name__ == "__main__":
    main()
