Files
chat-frontend/backend/app/db/init_db.py

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")