import uuid from pydantic import AwareDatetime, BaseModel class FanStepState(BaseModel): profile_collected_at: AwareDatetime | None = None top_artists_collected_at: AwareDatetime | None = None top_tracks_collected_at: AwareDatetime | None = None recently_played_collected_at: AwareDatetime | None = None playlists_collected_at: AwareDatetime | None = None saved_albums_collected_at: AwareDatetime | None = None saved_tracks_collected_at: AwareDatetime | None = None followed_artists_collected_at: AwareDatetime | None = None class FanRecord(BaseModel): dsp_user_id: str refresh_token_encrypted: str class FanBatch(BaseModel): run_id: uuid.UUID fans: list[FanRecord] @property def fans_processed(self) -> int: return len(self.fans)