from pydantic import BaseModel
from datetime import datetime
from typing import Optional
from enum import Enum

class TaskStatus(str, Enum):
    N = "New"
    C = "Completed"
    H = "Hold"
    X = "Cancelled"
    I = "InProgress"
 
class ProjectBase(BaseModel):
    name: Optional[str] = None
    status: Optional[TaskStatus] = None 
    is_active: Optional[bool] = True

class ProjectCreateRequest(ProjectBase):
    name: str

class ProjectUpdateRequest(ProjectBase):
    pass

class ProjectDDL(BaseModel):
    id: int
    name: str
    
class ProjectResponse(ProjectBase):
    id: int
    created_at: datetime
    updated_at: datetime
    created_by: Optional[int] = None
    updated_by: Optional[int] = None
    created_by_name: Optional[str] = None
    updated_by_name: Optional[str] = None

    class Config:
        orm_mode = True
        
