# Modèles de base de données pour Scrap-Dji from sqlalchemy import Column, String, Text, DateTime, ForeignKey, Table from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.ext.declarative import declarative_base import datetime Base = declarative_base() class Document(Base): __tablename__ = 'documents' id = Column(UUID(as_uuid=True), primary_key=True) titre = Column(String) texte = Column(Text) langue = Column(String) type_document = Column(String) auteur = Column(String) source_url = Column(String) tags = Column(String) pays = Column(String) date = Column(DateTime, default=datetime.datetime.utcnow) class DocumentVersion(Base): __tablename__ = 'document_versions' id = Column(UUID(as_uuid=True), primary_key=True) document_id = Column(UUID(as_uuid=True), ForeignKey('documents.id')) texte = Column(Text) date = Column(DateTime, default=datetime.datetime.utcnow) class Image(Base): __tablename__ = 'images' id = Column(UUID(as_uuid=True), primary_key=True) document_id = Column(UUID(as_uuid=True), ForeignKey('documents.id')) image_hash = Column(String) chemin = Column(String) class LienExterne(Base): __tablename__ = 'liens_externes' id = Column(UUID(as_uuid=True), primary_key=True) document_id = Column(UUID(as_uuid=True), ForeignKey('documents.id')) url = Column(String) # Schémas Pydantic pour MongoDB (NoSQL) from pydantic import BaseModel, Field from typing import List, Optional class MongoDocument(BaseModel): uuid: str titre: str texte: str langue: str type_document: str auteur: Optional[str] source_url: Optional[str] tags: Optional[List[str]] pays: Optional[str] date: Optional[str] images: Optional[List[str]] liens_externes: Optional[List[str]] versions: Optional[List[dict]] metadonnees: Optional[dict]