feat(db): Re-added database initialization before starting API

This commit is contained in:
Fanilo-Nantenaina 2025-12-31 10:40:50 +03:00
parent 6b1710ad99
commit f217058538
3 changed files with 31 additions and 27 deletions

View file

@ -18,4 +18,6 @@ RUN mkdir -p /app/data && chmod 777 /app/data
EXPOSE 8000
# Lancer l'API et initialiser la DB au démarrage
CMD ["sh", "-c", "uvicorn api:app --host 0.0.0.0 --port 8000"]
# CMD ["sh", "-c", "uvicorn api:app --host 0.0.0.0 --port 8000"]
CMD ["sh", "-c", "python init_db.py && uvicorn api:app --host 0.0.0.0 --port 8000"]

View file

@ -1,6 +1,6 @@
import os
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy.pool import StaticPool
from sqlalchemy.pool import NullPool
import logging
from database.models.generic_model import Base
@ -13,8 +13,7 @@ engine = create_async_engine(
DATABASE_URL,
echo=False,
future=True,
connect_args={"check_same_thread": False},
poolclass=StaticPool,
poolclass=NullPool,
)
async_session_factory = async_sessionmaker(
@ -26,9 +25,13 @@ async_session_factory = async_sessionmaker(
async def init_db():
logger.info("Debut init_db")
try:
logger.info("Tentative de connexion")
async with engine.begin() as conn:
logger.info("Connexion etablie")
await conn.run_sync(Base.metadata.create_all)
logger.info("create_all execute")
logger.info("Base de données initialisée avec succès")
logger.info(f"Fichier DB: {DATABASE_URL}")
@ -40,10 +43,7 @@ async def init_db():
async def get_session() -> AsyncSession:
async with async_session_factory() as session:
try:
yield session
finally:
await session.close()
async def close_db():

View file

@ -7,36 +7,38 @@ sys.path.insert(0, str(Path(__file__).parent))
from database import init_db
import logging
logging.basicConfig(level=logging.INFO)
logging.basicConfig(
level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)
async def main():
print("\n" + "=" * 60)
print("Initialisation de la base de données Sage Dataven")
print("Initialisation de la base de données délocalisée")
print("=" * 60 + "\n")
try:
# Créer les tables
logger.info("Debut de l'initialisation")
await init_db()
logger.info("Initialisation terminee")
print("\nBase de données créée avec succès !")
print("Fichier: sage_dataven.db")
print("\nTables créées:")
print(" ├─ email_logs (Journalisation emails)")
print(" ├─ signature_logs (Suivi signatures Universign)")
print(" ├─ workflow_logs (Transformations documents)")
print(" ├─ cache_metadata (Métadonnées cache)")
print(" └─ audit_logs (Journal d'audit)")
print(" |- email_logs (Journalisation emails)")
print(" |- signature_logs (Suivi signatures Universign)")
print(" |- workflow_logs (Transformations documents)")
print(" |- cache_metadata (Métadonnées cache)")
print(" |- audit_logs (Journal d'audit)")
print("\nProchaines étapes:")
print(" 1. Configurer le fichier .env avec vos credentials")
print(" 1. Configurer le fichier .env avec les credentials")
print(" 2. Lancer la gateway Windows sur la machine Sage")
print(" 3. Lancer l'API VPS: uvicorn api:app --host 0.0.0.0 --port 8000")
print(" 4. Ou avec Docker : docker-compose up -d")
print(" 5. Tester: http://0.0.0.0:8000/docs")
print(" 5. Tester: http://IP_DU_VPS:8000/docs")
print("\n" + "=" * 60 + "\n")
return True