from pydantic import BaseModel
from datetime import datetime
from typing import Optional

class ModuleBase(BaseModel):
    project_id: int = None
    title: str = None
    description: Optional[str] = None
    is_active: Optional[bool] = True

class ModuleCreateRequest(ModuleBase):
    project_id: int
    title: str

class ModuleUpdateRequest(ModuleBase):
    pass

class ModuleResponse(ModuleBase):
    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
        
class ModuleWithProject(BaseModel):
    module_id: int
    module_title: str
    module_description: Optional[str]
    is_active: bool
    project_id: int
    project_name: str
    
    class Config:
        orm_mode = True        
        
class ModuleDDLReponse(BaseModel):
    id: int
    name: str
    
    class Config:
        orm_mode = True        