diff --git a/backend/backend/db/db.py b/backend/backend/db/db.py index 8096676..28dbd18 100644 --- a/backend/backend/db/db.py +++ b/backend/backend/db/db.py @@ -1,10 +1,11 @@ +from asyncio import sleep from logging import getLogger from typing import Annotated, AsyncIterator from fastapi import Depends from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor from sqlalchemy import text -from sqlalchemy.exc import SQLAlchemyError +from sqlalchemy.exc import OperationalError, SQLAlchemyError from sqlalchemy.ext.asyncio import ( async_sessionmaker, AsyncEngine, @@ -56,11 +57,20 @@ class Database: class_=AsyncSession, ) - async with self._async_engine.begin() as session: - await session.execute(text("CREATE EXTENSION IF NOT EXISTS pg_trgm;")) - if clear_static_data: - await session.run_sync(Base.metadata.drop_all) - await session.run_sync(Base.metadata.create_all) + ret = False + while not ret: + try: + async with self._async_engine.begin() as session: + await session.execute( + text("CREATE EXTENSION IF NOT EXISTS pg_trgm;") + ) + if clear_static_data: + await session.run_sync(Base.metadata.drop_all) + await session.run_sync(Base.metadata.create_all) + ret = True + except OperationalError as err: + logger.error(err) + await sleep(1) return True diff --git a/backend/config/config.sample.yaml b/backend/config.local.yaml similarity index 71% rename from backend/config/config.sample.yaml rename to backend/config.local.yaml index 54b76e7..5ef8421 100644 --- a/backend/config/config.sample.yaml +++ b/backend/config.local.yaml @@ -1,8 +1,9 @@ app_name: carrramba-encore-rate +clear_static_data: false http: host: 0.0.0.0 - port: 4443 + port: 8080 cert: ./config/cert.pem db: @@ -12,3 +13,9 @@ db: driver: postgresql+psycopg user: cer password: cer_password + +cache: + enable: true + +tracing: + enable: false diff --git a/backend/config.sample.yaml b/backend/config.sample.yaml new file mode 100644 index 0000000..018eca1 --- /dev/null +++ b/backend/config.sample.yaml @@ -0,0 +1,23 @@ +app_name: carrramba-encore-rate +clear_static_data: false + +http: + host: 0.0.0.0 + port: 8080 +# cert: ./config/cert.pem + +db: + name: carrramba-encore-rate + host: postgres + port: 5432 + driver: postgresql+psycopg + user: cer + password: cer_password + +cache: + enable: true + host: redis + # TODO: Add user credentials + +tracing: + enable: false