from sqlmodel import select, Session

from app.models import User, Role
from app.core.security import hash_password
from app.core.config import get_settings
from app.core.logging import setup_logger

logger = setup_logger(__name__)
settings = get_settings()

def seed_superadmin(session: Session):
    """Create multiple SUPERADMIN users if defined in environment."""

    if not settings.SUPERADMINS:
        logger.warning("No SUPERADMIN entries found. Seeder skipped.")
        return

    for admin in settings.SUPERADMINS:
        normalized_email = admin.email.lower().strip()

        # Check if superadmin exists by normalized email
        existing_super = session.exec(select(User).where(User.email == normalized_email)).first()

        if existing_super:
            logger.info(f"SUPERADMIN already exists: {normalized_email}. Skipping.")
            continue

        # Create new superadmin
        new_super = User(
            email=normalized_email,
            first_name=admin.first_name,
            last_name=admin.last_name,
            hashed_password=hash_password(admin.password),
            role=Role.SUPERADMIN,
            is_active=True,
        )

        session.add(new_super)
        logger.info(f"Created SUPERADMIN: {normalized_email}")

    session.commit()
    logger.info("Superadmin seeding completed.")
