from sqlalchemy.orm import Session
from passlib.context import CryptContext
from app.database import SessionLocal, engine, Base
from app.models.company import Company
from app.models.user import User

# 비밀번호 암호화 도구
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

def create_admin_user():
    db: Session = SessionLocal()
    try:
        # 1. 회사 생성 (이미 있으면 패스)
        company_name = "PassON HQ"
        company = db.query(Company).filter(Company.name == company_name).first()
        if not company:
            print(f"[INFO] Creating Company: {company_name}...")
            company = Company(name=company_name, plan="enterprise")
            db.add(company)
            db.commit()
            db.refresh(company)
        else:
            print(f"[INFO] Company '{company_name}' already exists (ID: {company.id}).")

        # 2. 유저 생성 (이미 있으면 패스)
        email = "admin@passon.co.kr"
        password = "admin"  # 초기 비밀번호 (변경 권장)
        
        user = db.query(User).filter(User.email == email).first()
        if not user:
            print(f"[INFO] Creating Admin User: {email}...")
            hashed_pw = pwd_context.hash(password)
            user = User(
                company_id=company.id,
                email=email,
                hashed_password=hashed_pw,
                role="admin"
            )
            db.add(user)
            db.commit()
            print(f"[SUCCESS] Admin created!")
            print(f" - Email: {email}")
            print(f" - Password: {password}")
        else:
            print(f"[INFO] User '{email}' already exists.")
            
    except Exception as e:
        print(f"[ERROR] Failed to create admin: {e}")
    finally:
        db.close()

if __name__ == "__main__":
    create_admin_user()
