from __future__ import annotations from dataclasses import dataclass, field from datetime import UTC, datetime from uuid import uuid4 @dataclass(slots=True) class PointsAccount: id: str user_id: str balance: int = 0 total_earned: int = 0 total_spent: int = 0 created_at: datetime = field(default_factory=lambda: datetime.now(UTC)) updated_at: datetime = field(default_factory=lambda: datetime.now(UTC)) @classmethod def create(cls, user_id: str) -> "PointsAccount": return cls(id=uuid4().hex, user_id=user_id)