thechaiexperiment's picture
Upload 17 files
d825c91 verified
raw
history blame
2.55 kB
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, JSON, Text, Enum
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from datetime import datetime
import enum
Base = declarative_base()
class DocumentType(enum.Enum):
PDF = "pdf"
DOCX = "docx"
IMAGE = "image"
TEXT = "text"
class Document(Base):
__tablename__ = "documents"
id = Column(Integer, primary_key=True)
filename = Column(String(255), nullable=False)
file_type = Column(Enum(DocumentType), nullable=False)
content = Column(Text)
metadata = Column(JSON)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
test_cases = relationship("TestCase", back_populates="document")
class TestCase(Base):
__tablename__ = "test_cases"
id = Column(Integer, primary_key=True)
document_id = Column(Integer, ForeignKey("documents.id"))
title = Column(String(255), nullable=False)
description = Column(Text)
steps = Column(JSON)
expected_results = Column(JSON)
priority = Column(Integer)
status = Column(String(50))
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
document = relationship("Document", back_populates="test_cases")
test_scripts = relationship("TestScript", back_populates="test_case")
class TestScript(Base):
__tablename__ = "test_scripts"
id = Column(Integer, primary_key=True)
test_case_id = Column(Integer, ForeignKey("test_cases.id"))
language = Column(String(50))
code = Column(Text)
framework = Column(String(50))
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
test_case = relationship("TestCase", back_populates="test_scripts")
class AIModelInteraction(Base):
__tablename__ = "ai_model_interactions"
id = Column(Integer, primary_key=True)
provider = Column(String(50), nullable=False)
model = Column(String(100), nullable=False)
prompt = Column(Text, nullable=False)
response = Column(Text)
metrics = Column(JSON)
created_at = Column(DateTime, default=datetime.utcnow)
def __repr__(self):
return f"<AIModelInteraction(provider={self.provider}, model={self.model})>"