aibilly_backend_code/src/models/rag_document_model.py
laxmanhalaki b793ac859a
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / build (push) Has been cancelled
CI/CD Pipeline / deploy-staging (push) Has been cancelled
CI/CD Pipeline / deploy-production (push) Has been cancelled
modification done to up the project
2026-03-12 20:52:08 +05:30

51 lines
2.3 KiB
Python

from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Text, JSON, ARRAY
from sqlalchemy.orm import relationship
from sqlalchemy.dialects.postgresql import UUID
from src.config.database import Base
from sqlalchemy.sql import func
import uuid
class RAGDocument(Base):
__tablename__ = 'rag_documents'
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, nullable=False)
document_type = Column(String(255), nullable=False)
title = Column(String(255), nullable=False)
payer_id = Column(UUID(as_uuid=True), nullable=True)
payer_name = Column(String(255), nullable=True)
specialty = Column(String(255), nullable=True)
content = Column(Text, nullable=False)
content_hash = Column(String(255), nullable=True)
embedding_vector = Column(String(255), nullable=True)
chunk_index = Column(Integer, nullable=True)
parent_document_id = Column(UUID(as_uuid=True), nullable=True)
source_url = Column(String(255), nullable=True)
source_file_path = Column(String(255), nullable=True)
effective_date = Column(DateTime, nullable=True)
expiration_date = Column(DateTime, nullable=True)
version = Column(String(255), nullable=True)
is_stale = Column(Boolean, nullable=True)
relevance_score = Column(String(255), nullable=True)
usage_count = Column(Integer, nullable=True)
last_used_at = Column(DateTime, nullable=True)
doc_doc_doc_metadata = Column(JSON, nullable=True)
tags = Column(JSON, nullable=True)
payer_id = Column(UUID(as_uuid=True), ForeignKey('payers.id'), nullable=True)
payer = relationship('Payer', back_populates='ragDocuments')
parent_document_id = Column(UUID(as_uuid=True), ForeignKey('rag_documents.id'), nullable=True)
parent_document = relationship('RAGDocument', remote_side=[id], back_populates='chunks')
chunks = relationship('RAGDocument', back_populates='parent_document')
uploaded_by_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), nullable=True)
uploader = relationship('User', back_populates='uploadedDocuments')
created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False)
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)
def __repr__(self):
return f'<RAGDocument(id={self.id})>'