import argparse

from hostable_portal import create_app
from hostable_portal.extensions import db
from hostable_portal.models import AuditLog, User


def main():
    parser = argparse.ArgumentParser(description="Initialize the hostable portal database.")
    parser.add_argument("--admin-username", required=True)
    parser.add_argument("--admin-email", required=True)
    parser.add_argument("--admin-password", required=True)
    args = parser.parse_args()

    app = create_app()
    with app.app_context():
        db.create_all()
        existing = User.query.filter_by(username=args.admin_username.strip().lower()).first()
        if existing:
            print("Admin user already exists.")
            return
        admin = User(
            username=args.admin_username.strip().lower(),
            email=args.admin_email.strip().lower(),
            role="admin",
            is_active=True,
        )
        admin.set_password(args.admin_password)
        db.session.add(admin)
        db.session.flush()
        db.session.add(
            AuditLog(
                event_type="bootstrap_admin_created",
                user_id=admin.id,
                detail=f"Bootstrap admin created for {admin.username}.",
            )
        )
        db.session.commit()
        print(f"Created admin user: {admin.username}")


if __name__ == "__main__":
    main()
