from datetime import datetime from pydantic import BaseModel, Field class GroupCreate(BaseModel): name: str = Field(..., min_length=1, max_length=128) description: str | None = Field(None, max_length=512) class GroupUpdate(BaseModel): name: str | None = Field(None, min_length=1, max_length=128) description: str | None = Field(None, max_length=512) class GroupMemberOut(BaseModel): id: str email: str full_name: str | None is_active: bool is_group_admin: bool = False joined_at: datetime model_config = {"from_attributes": True} class GroupMemberAdminUpdate(BaseModel): is_group_admin: bool class GroupOut(BaseModel): id: str name: str description: str | None created_at: datetime member_count: int = 0 model_config = {"from_attributes": True} class GroupDetailOut(GroupOut): members: list[GroupMemberOut] = []