from pydantic import BaseModel
from typing import Optional
from uuid import UUID
from schema.organization_schema import OrganizationListResponse
from schema.user_schema import UserSchema
from schema.organization_schema import PaginationSchema

class ProjectCreateRequestSchema(BaseModel):
    name: str
    description: Optional[str] = None
    org_id: Optional[UUID]=None

class ProjectUpdateRequestSchema(BaseModel):
    name: str
    project_id: UUID
    description: Optional[str] = None
    org_id: Optional[UUID]=None
    status: Optional[str] = None

class ProjectResponseSchema(BaseModel):
    id: UUID
    name: str
    description: Optional[str] = None
    org_id: UUID
    created_by: UUID
    project_key: str
    status: Optional[str] = None
    message: Optional[str] = None

    class Config:
        from_attributes = True
        from_orm = True


class AllProjectResponseSchema(BaseModel):
    id: UUID
    name: str
    organization: OrganizationListResponse
    creator: UserSchema
    description: Optional[str] = None
    project_key: str
    status: str

    class Config:
        from_attributes = True
        from_orm = True

class ProjectListResponseSchema(BaseModel):
    data: list[AllProjectResponseSchema]
    pagination:PaginationSchema