from typing import Optional
from pydantic import BaseModel


class ProjectCreate(BaseModel):
    name: str
    description: Optional[str] = ""


class ProjectUpdate(BaseModel):
    name: Optional[str] = None
    description: Optional[str] = None
    status: Optional[str] = None  # 'active' | 'archived' | 'deleted'


class ProjectResponse(BaseModel):
    id: str
    name: str
    description: str
    status: str
    created_by: str
    created_at: str
    updated_at: str

    model_config = {"from_attributes": True}


class MemberAdd(BaseModel):
    user_id: str
    role: str  # 'owner' | 'member'


class MemberUpdate(BaseModel):
    role: str  # 'owner' | 'member'


class MemberResponse(BaseModel):
    id: str
    project_id: str
    user_id: str
    username: str = ""
    display_name: str = ""
    role: str
    added_by: Optional[str] = None
    created_at: str

    model_config = {"from_attributes": True}
