import uuid from typing import TYPE_CHECKING, Any from sqlalchemy import JSON, Boolean, ForeignKey, String, Text from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base, TimestampMixin, UUIDMixin if TYPE_CHECKING: from app.models.tool_instance import ToolInstance class AccessRoute(Base, UUIDMixin, TimestampMixin): __tablename__ = "access_route" tool_instance_id: Mapped[uuid.UUID] = mapped_column( ForeignKey("tool_instance.id"), index=True ) domain: Mapped[str] = mapped_column(Text) path_prefix: Mapped[str] = mapped_column( String(255), default="/" ) provider_type: Mapped[str] = mapped_column( String(50), default="traefik" ) provider_config: Mapped[dict[str, Any] | None] = mapped_column( JSON, nullable=True ) is_active: Mapped[bool] = mapped_column( Boolean, default=True ) tool_instance: Mapped["ToolInstance"] = relationship( back_populates="access_routes" )