38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import logging
|
|
|
|
from sqlalchemy.orm import Session
|
|
from sqlalchemy import select
|
|
|
|
from app.core.config import settings
|
|
from app.core.security import get_password_hash
|
|
from app.db.base_class import Base
|
|
from app.db.session import engine
|
|
from app.db.models import User
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def init_db(db: Session) -> None:
|
|
# MVP: create tables if they don't exist
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
bootstrap_admin(db)
|
|
|
|
def bootstrap_admin(db: Session) -> None:
|
|
admin_login = settings.admin_bootstrap_login
|
|
admin_pass = settings.admin_bootstrap_password
|
|
|
|
user = db.scalar(select(User).where(User.login == admin_login))
|
|
if not user:
|
|
logger.info(f"Creating bootstrap admin user: {admin_login}")
|
|
hashed_password = get_password_hash(admin_pass)
|
|
admin_user = User(
|
|
login=admin_login,
|
|
hashed_password=hashed_password,
|
|
is_active=True,
|
|
)
|
|
db.add(admin_user)
|
|
db.commit()
|
|
db.refresh(admin_user)
|
|
else:
|
|
logger.info(f"Admin user {admin_login} already exists")
|