from __future__ import annotations import uuid from datetime import datetime from pydantic import BaseModel, ConfigDict class BandInviteRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID band_id: uuid.UUID token: str role: str expires_at: datetime used_at: datetime | None = None class BandInviteListItem(BaseModel): """Invite for listing (includes creator info)""" model_config = ConfigDict(from_attributes=True) id: uuid.UUID band_id: uuid.UUID token: str role: str expires_at: datetime created_at: datetime is_used: bool used_at: datetime | None = None # Creator info (optional, can be expanded) class BandInviteList(BaseModel): """Response for listing invites""" model_config = ConfigDict(from_attributes=True) invites: list[BandInviteListItem] total: int pending: int class InviteInfoRead(BaseModel): """Public invite info (used for /invites/{token}/info)""" model_config = ConfigDict(from_attributes=True) id: uuid.UUID band_id: uuid.UUID band_name: str band_slug: str role: str expires_at: datetime created_at: datetime is_used: bool class BandMemberRead(BaseModel): model_config = ConfigDict(from_attributes=True) id: uuid.UUID display_name: str email: str role: str joined_at: datetime