Scrap-Dji / db /models.py
joel
Initial deployment: Scrap-Dji with API
dfdddb1
# 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]