From 411c3c91b26c83b0c1ac26aec7bdec25e6531515 Mon Sep 17 00:00:00 2001 From: mohamad Date: Sun, 1 Jun 2025 16:54:16 +0200 Subject: [PATCH] feat: Add Alembic configuration and migration command to application startup --- be/Dockerfile | 2 ++ be/app/main.py | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/be/Dockerfile b/be/Dockerfile index 53d04bd..e50caea 100644 --- a/be/Dockerfile +++ b/be/Dockerfile @@ -47,6 +47,8 @@ WORKDIR /app COPY --chown=appuser:appuser app/ ./app/ COPY --chown=appuser:appuser *.py ./ COPY --chown=appuser:appuser requirements.txt ./ +COPY --chown=appuser:appuser alembic.ini ./ +COPY --chown=appuser:appuser alembic/ ./alembic/ # Create logs directory RUN mkdir -p /app/logs && chown -R appuser:appuser /app diff --git a/be/app/main.py b/be/app/main.py index f9105e9..b6e3543 100644 --- a/be/app/main.py +++ b/be/app/main.py @@ -9,6 +9,9 @@ from sentry_sdk.integrations.fastapi import FastApiIntegration from fastapi_users.authentication import JWTStrategy from pydantic import BaseModel from jose import jwt, JWTError +from alembic.config import Config +from alembic import command +import os from app.api.api_router import api_router from app.config import settings @@ -216,8 +219,17 @@ async def read_root(): async def startup_event(): """Initialize services on startup.""" logger.info(f"Application startup in {settings.ENVIRONMENT} environment...") - # You might perform initial checks or warm-up here - # await database.engine.connect() # Example check (get_db handles sessions per request) + + # Run database migrations + try: + logger.info("Running database migrations...") + alembic_cfg = Config("alembic.ini") + command.upgrade(alembic_cfg, "head") + logger.info("Database migrations completed successfully.") + except Exception as e: + logger.error(f"Failed to run database migrations: {e}") + raise + init_scheduler() logger.info("Application startup complete.") -- 2.45.2