import uuid from datetime import datetime from sqlalchemy import Boolean, DateTime, String, UniqueConstraint, func from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class DocumentShare(Base): __tablename__ = "document_shares" id: Mapped[str] = mapped_column(String, primary_key=True, default=lambda: str(uuid.uuid4())) document_id: Mapped[str] = mapped_column(String, nullable=False, index=True) group_id: Mapped[str] = mapped_column(String, nullable=False, index=True) shared_by_user_id: Mapped[str] = mapped_column(String, nullable=False) can_delete: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default="false") created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), nullable=False ) __table_args__ = ( UniqueConstraint("document_id", "group_id", name="uq_document_group_share"), )