Clawith/backend/app/models/published_page.py

27 lines
1.3 KiB
Python

"""Published page model for public HTML hosting."""
import uuid
from datetime import datetime
from sqlalchemy import DateTime, ForeignKey, Integer, String, func
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from app.database import Base
class PublishedPage(Base):
"""A publicly accessible HTML page published from an agent workspace."""
__tablename__ = "published_pages"
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
short_id: Mapped[str] = mapped_column(String(16), unique=True, index=True, nullable=False)
agent_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("agents.id"), nullable=False, index=True)
user_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False)
tenant_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("tenants.id"), nullable=True)
source_path: Mapped[str] = mapped_column(String(500), nullable=False)
title: Mapped[str] = mapped_column(String(200), default="")
view_count: Mapped[int] = mapped_column(Integer, default=0)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())