import uuid from datetime import datetime from sqlalchemy import DateTime, ForeignKey, String, Text, Uuid, func from sqlalchemy.orm import Mapped, mapped_column, relationship from app.database import Base class NotificationLog(Base): __tablename__ = "notification_log" id: Mapped[uuid.UUID] = mapped_column(Uuid(as_uuid=True), primary_key=True, default=uuid.uuid4) user_id: Mapped[uuid.UUID] = mapped_column( Uuid(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False ) registration_id: Mapped[uuid.UUID | None] = mapped_column( Uuid(as_uuid=True), ForeignKey("registrations.id", ondelete="SET NULL") ) type: Mapped[str] = mapped_column(String(50), nullable=False) title: Mapped[str] = mapped_column(String(255), nullable=False) body: Mapped[str] = mapped_column(Text, nullable=False) sent_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now()) delivery_status: Mapped[str] = mapped_column(String(20), default="pending") user: Mapped["User"] = relationship(back_populates="notification_logs") # type: ignore[name-defined] registration: Mapped["Registration | None"] = relationship(back_populates="notification_logs") # type: ignore[name-defined]