import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))

from core.database import SessionLocal, engine
from models.admin import Admin, AdminRole
from sqlalchemy.exc import IntegrityError
import bcrypt

def hash_password(password: str) -> str:
    return bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')

def create_default_admin():
    db = SessionLocal()
    username = "admin"
    password = "Admin@123"  # Default password
    email = "admin@example.com"
    try:
        existing_admin = db.query(Admin).filter(Admin.username == username).first()
        if existing_admin:
            print(f"Default admin user '{username}' already exists.")
            return username, password

        admin = Admin(
            username=username,
            email=email,
            password_hash=hash_password(password),
            role=AdminRole.ADMINISTRATOR,
            is_active=True
        )
        db.add(admin)
        db.commit()
        print(f"Default admin user '{username}' created successfully.")
        return username, password
    except IntegrityError:
        db.rollback()
        print("Failed to create default admin user due to integrity error.")
    finally:
        db.close()

if __name__ == "__main__":
    user, pwd = create_default_admin()
    print(f"Username: {user}")
    print(f"Password: {pwd}")
