from pydantic import BaseModel from typing import Optional from datetime import datetime, date from app.models.leaves import LeaveType, LeaveStatus class LeaveRequestBase(BaseModel): leave_type: LeaveType start_date: date end_date: date days_requested: int reason: Optional[str] = None class LeaveRequestCreate(LeaveRequestBase): employee_id: int class LeaveRequestUpdate(BaseModel): leave_type: Optional[LeaveType] = None start_date: Optional[date] = None end_date: Optional[date] = None days_requested: Optional[int] = None reason: Optional[str] = None class LeaveRequestApproval(BaseModel): status: LeaveStatus comments: Optional[str] = None class LeaveRequest(LeaveRequestBase): id: int employee_id: int status: LeaveStatus approved_by: Optional[int] = None approved_at: Optional[datetime] = None comments: Optional[str] = None created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True