diff --git a/apps/api/src/main.py b/apps/api/src/main.py index a9a8b70..0d0bf1e 100644 --- a/apps/api/src/main.py +++ b/apps/api/src/main.py @@ -1,5 +1,9 @@ +import logging + from fastapi import FastAPI from fastapi.staticfiles import StaticFiles +from sqlalchemy import select +from sqlalchemy.exc import ProgrammingError from src.api.auth import router as auth_router from src.api.git_repositories import router as git_repositories_router @@ -10,8 +14,8 @@ from src.api.user_config import router as user_config_router from src.api.users import router as users_router from src.database import SessionLocal from src.models.tool_type import ToolType -from sqlalchemy import select +logger = logging.getLogger(__name__) app = FastAPI(title="Headquarter API") @@ -58,20 +62,24 @@ services: }, ] - for tool_data in builtin_types: - existing = await session.scalar(select(ToolType).where(ToolType.name == tool_data["name"])) - if not existing: - tool_type = ToolType( - name=tool_data["name"], - display_name=tool_data["display_name"], - description=tool_data["description"], - compose_template=tool_data["compose_template"], - required_variables=tool_data["required_variables"], - is_builtin=True, - ) - session.add(tool_type) + try: + for tool_data in builtin_types: + existing = await session.scalar(select(ToolType).where(ToolType.name == tool_data["name"])) + if not existing: + tool_type = ToolType( + name=tool_data["name"], + display_name=tool_data["display_name"], + description=tool_data["description"], + compose_template=tool_data["compose_template"], + required_variables=tool_data["required_variables"], + is_builtin=True, + ) + session.add(tool_type) - await session.commit() + await session.commit() + except ProgrammingError: + logger.warning("tool_types table does not exist yet. Skipping seeding. Run migrations first.") + await session.rollback() @app.on_event("startup")