import uuid from datetime import datetime, timezone from sqlmodel import SQLModel, Field, Column from sqlalchemy import JSON class Notification(SQLModel, table=True): __tablename__ = "notifications" id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True) user_id: uuid.UUID = Field(foreign_key="users.id", index=True) type: str = Field( max_length=32 ) # zone_captured | leaderboard_change | streak_risk | friend_joined | raid_weekend payload: dict = Field(default_factory=dict, sa_column=Column(JSON)) sent_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) read_at: datetime | None = None