Spaces:
Build error
Build error
| from sqlalchemy import Column, Integer, String, DateTime, Text, JSON, Float, Boolean, ForeignKey | |
| from sqlalchemy.ext.declarative import declarative_base | |
| from sqlalchemy.orm import relationship | |
| from datetime import datetime | |
| Base = declarative_base() | |
| class PromptTemplate(Base): | |
| __tablename__ = "prompt_templates" | |
| id = Column(Integer, primary_key=True) | |
| template_id = Column(String(64), unique=True, nullable=False) | |
| name = Column(String(128), nullable=False) | |
| description = Column(Text, nullable=True) | |
| template_text = Column(Text, nullable=False) | |
| variables = Column(JSON, default=[]) # list of variable names | |
| category = Column(String(64), nullable=True) | |
| tags = Column(JSON, default=[]) # list of tags (avoid 'metadata') | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) | |
| is_active = Column(Boolean, default=True) | |
| versions = relationship("PromptVersion", back_populates="template") | |
| tests = relationship("PromptTest", back_populates="template") | |
| class PromptVersion(Base): | |
| __tablename__ = "prompt_versions" | |
| id = Column(Integer, primary_key=True) | |
| template_id = Column(Integer, ForeignKey("prompt_templates.id")) | |
| version = Column(Integer, nullable=False) | |
| template_text = Column(Text, nullable=False) | |
| variables = Column(JSON, default=[]) | |
| changelog = Column(Text, nullable=True) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| is_latest = Column(Boolean, default=False) | |
| template = relationship("PromptTemplate", back_populates="versions") | |
| class PromptTest(Base): | |
| __tablename__ = "prompt_tests" | |
| id = Column(Integer, primary_key=True) | |
| template_id = Column(Integer, ForeignKey("prompt_templates.id")) | |
| test_id = Column(String(64), unique=True, nullable=False) | |
| test_input = Column(JSON, default={}) # variable values | |
| test_output = Column(Text, nullable=True) # rendered prompt | |
| passed = Column(Boolean, default=False) | |
| executed_at = Column(DateTime, default=datetime.utcnow) | |
| error_message = Column(Text, nullable=True) | |
| template = relationship("PromptTemplate", back_populates="tests") | |
| class PromptHistory(Base): | |
| __tablename__ = "prompt_history" | |
| id = Column(Integer, primary_key=True) | |
| template_id = Column(Integer, ForeignKey("prompt_templates.id")) | |
| action = Column(String(32), nullable=False) # create, update, test, rollback | |
| details = Column(JSON, default={}) | |
| user_id = Column(String(64), nullable=True) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |