""" 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)}