from sqlalchemy import Column, Integer, String, Text, JSON, DateTime, ForeignKey, Float from sqlalchemy.orm import relationship from datetime import datetime from .session import Base class Company(Base): __tablename__ = "companies" id = Column(Integer, primary_key=True, index=True) name = Column(String, unique=True, index=True) description = Column(Text, nullable=True) website = Column(String, nullable=True) last_analysis_date = Column(DateTime, default=datetime.utcnow) # JSON blobs for structured analysis data analysis_result = Column(JSON, nullable=True) requests = relationship("AnalysisRequest", back_populates="company") class AnalysisRequest(Base): __tablename__ = "requests" id = Column(Integer, primary_key=True, index=True) user_id = Column(String, index=True) # Linking to frontend user ID company_name = Column(String) website = Column(String, nullable=True) document_name = Column(String, nullable=True) document_content = Column(Text, nullable=True) # Extracted text from PDF status = Column(String, default="pending") # pending, processing, completed, failed submission_date = Column(DateTime, default=datetime.utcnow) analysis_result = Column(JSON, nullable=True) rejection_reason = Column(String, nullable=True) company_id = Column(Integer, ForeignKey("companies.id"), nullable=True) company = relationship("Company", back_populates="requests")