import uuid from datetime import datetime from typing import Literal, Optional from pydantic import BaseModel, ConfigDict, Field from app.schemas.user import UserDisplay StudyRole = Literal["PM", "CRA", "PV", "IMP", "QA", "ADMIN"] class StudyMemberCreate(BaseModel): user_id: uuid.UUID role_in_study: StudyRole is_active: bool = True class StudyMemberUpdate(BaseModel): role_in_study: Optional[StudyRole] = None is_active: Optional[bool] = None class StudyMemberRead(BaseModel): id: uuid.UUID study_id: uuid.UUID user_id: uuid.UUID role_in_study: StudyRole is_active: bool added_at: datetime model_config = ConfigDict(from_attributes=True) class StudyMemberReadWithUser(StudyMemberRead): user: Optional[UserDisplay] = None