18 lines
669 B
Python
18 lines
669 B
Python
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
|