from sqlalchemy import Column, Integer, String, Boolean, Text, TIMESTAMP, UniqueConstraint from sqlalchemy.sql import func from sqlalchemy.dialects.sqlite import JSON from app.core.database import Base class Endpoint(Base): __tablename__ = "endpoints" id = Column(Integer, primary_key=True, autoincrement=True) route = Column(String(500), nullable=False) method = Column(String(10), nullable=False) # GET, POST, etc. response_body = Column(Text, nullable=False) response_code = Column(Integer, nullable=False, default=200) content_type = Column(String(100), nullable=False, default="application/json") is_active = Column(Boolean, nullable=False, default=True) variables = Column(JSON, default=dict) # Default template variables headers = Column(JSON, default=dict) # Custom response headers delay_ms = Column(Integer, default=0) # Artificial delay in milliseconds requires_oauth = Column(Boolean, default=False) oauth_scopes = Column(JSON, default=list) # List of required OAuth scopes created_at = Column(TIMESTAMP, server_default=func.now()) updated_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now()) __table_args__ = ( UniqueConstraint('route', 'method', name='uq_endpoint_route_method'), {"sqlite_autoincrement": True}, ) def __repr__(self): return f""