import uuid from datetime import datetime from sqlalchemy import String, Integer, Text, DateTime, Uuid, func from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class SanctuaryEntry(Base): __tablename__ = "sanctuary_entries" id: Mapped[uuid.UUID] = mapped_column(Uuid, primary_key=True, default=uuid.uuid4) entry_type: Mapped[str] = mapped_column(String(64), nullable=False) # document, decision, vote_result reference_id: Mapped[uuid.UUID] = mapped_column(Uuid, nullable=False) title: Mapped[str | None] = mapped_column(String(256)) content_hash: Mapped[str] = mapped_column(String(128), nullable=False) # SHA-256 ipfs_cid: Mapped[str | None] = mapped_column(String(128)) chain_tx_hash: Mapped[str | None] = mapped_column(String(128)) chain_block: Mapped[int | None] = mapped_column(Integer) metadata_json: Mapped[str | None] = mapped_column(Text) # JSON string for extra data created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())