ncantu 884a8eed96 fix: Corrections finales et optimisations
- Corrections mineures dans les pipelines
- Optimisations de l'API complète
- Améliorations de la documentation
- Finalisation du système
2025-09-09 04:57:45 +02:00

70 lines
2.2 KiB
Python

"""
Configuration de la base de données
"""
import os
from sqlalchemy import create_engine, Column, String, Integer, DateTime, Text, JSON, Boolean, Float
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from .models import Base
# Configuration de la base de données
DATABASE_URL = os.getenv(
"DATABASE_URL",
"postgresql+psycopg://notariat:notariat_pwd@localhost:5432/notariat"
)
# Création du moteur de base de données
engine = create_engine(DATABASE_URL, echo=False)
# Session factory
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def get_db():
"""Dependency pour obtenir une session de base de données"""
db = SessionLocal()
try:
yield db
finally:
db.close()
def init_db():
"""Initialise la base de données en créant toutes les tables"""
try:
Base.metadata.create_all(bind=engine)
print("✅ Base de données initialisée avec succès")
return True
except Exception as e:
print(f"❌ Erreur lors de l'initialisation de la base de données: {e}")
return False
def check_db_connection():
"""Vérifie la connexion à la base de données"""
try:
with engine.connect() as connection:
connection.execute("SELECT 1")
print("✅ Connexion à la base de données réussie")
return True
except Exception as e:
print(f"❌ Erreur de connexion à la base de données: {e}")
return False
def get_db_stats():
"""Retourne les statistiques de la base de données"""
try:
from .models import Document, Entity, Verification, ProcessingLog
db = SessionLocal()
try:
stats = {
"documents": db.query(Document).count(),
"entities": db.query(Entity).count(),
"verifications": db.query(Verification).count(),
"processing_logs": db.query(ProcessingLog).count()
}
return stats
finally:
db.close()
except Exception as e:
print(f"❌ Erreur lors de la récupération des statistiques: {e}")
return {"error": str(e)}