mockapi/models/endpoint_model.py
2026-03-16 05:47:01 +00:00

31 lines
1.4 KiB
Python

from sqlalchemy import Column, Integer, String, Boolean, Text, TIMESTAMP, UniqueConstraint
from sqlalchemy.sql import func
from sqlalchemy.dialects.sqlite import JSON
from 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"<Endpoint {self.method} {self.route}>"