feat(db): Re-added database initialization before starting API
This commit is contained in:
parent
6b1710ad99
commit
f217058538
3 changed files with 31 additions and 27 deletions
|
|
@ -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"]
|
||||
|
|
@ -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,26 +25,27 @@ 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}")
|
||||
logger.info("Base de données initialisée avec succès")
|
||||
logger.info(f"Fichier DB: {DATABASE_URL}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f" Erreur initialisation DB: {e}")
|
||||
logger.error(f"Erreur initialisation DB: {e}")
|
||||
raise
|
||||
|
||||
|
||||
async def get_session() -> AsyncSession:
|
||||
async with async_session_factory() as session:
|
||||
try:
|
||||
yield session
|
||||
finally:
|
||||
await session.close()
|
||||
yield session
|
||||
|
||||
|
||||
async def close_db():
|
||||
await engine.dispose()
|
||||
logger.info(" Connexions DB fermées")
|
||||
logger.info("Connexions DB fermées")
|
||||
|
|
|
|||
32
init_db.py
32
init_db.py
|
|
@ -7,42 +7,44 @@ 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("\n Base de données créée avec succès!")
|
||||
print(" Fichier: sage_dataven.db")
|
||||
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(" 4. Ou avec Docker : docker-compose up -d")
|
||||
print(" 5. Tester: http://IP_DU_VPS:8000/docs")
|
||||
|
||||
print("\n" + "=" * 60 + "\n")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n Erreur lors de l'initialisation: {e}")
|
||||
print(f"\nErreur lors de l'initialisation: {e}")
|
||||
logger.exception("Détails de l'erreur:")
|
||||
return False
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue