from dataclasses import dataclass from typing import Literal, Optional from models.base import BaseModel PendingEntityType = Literal['chore', 'reward'] PendingStatus = Literal['pending', 'approved', 'rejected'] @dataclass class PendingConfirmation(BaseModel): child_id: str entity_id: str entity_type: PendingEntityType user_id: str status: PendingStatus = "pending" approved_at: Optional[str] = None # ISO 8601 UTC timestamp, set on approval @classmethod def from_dict(cls, d: dict): return cls( child_id=d.get('child_id'), entity_id=d.get('entity_id'), entity_type=d.get('entity_type'), user_id=d.get('user_id'), status=d.get('status', 'pending'), approved_at=d.get('approved_at'), id=d.get('id'), created_at=d.get('created_at'), updated_at=d.get('updated_at') ) def to_dict(self): base = super().to_dict() base.update({ 'child_id': self.child_id, 'entity_id': self.entity_id, 'entity_type': self.entity_type, 'user_id': self.user_id, 'status': self.status, 'approved_at': self.approved_at }) return base