from pydantic import BaseModel, EmailStr, field_validator from typing import Optional, List from .specialty import Specialty class ContractorBase(BaseModel): name: str ruc: Optional[str] = None contact_name: Optional[str] = None email: Optional[EmailStr] = None phone: Optional[str] = None address: Optional[str] = None specialty_id: Optional[int] = None parent_id: Optional[int] = None is_active: bool = True @field_validator('ruc', 'contact_name', 'email', 'phone', 'address', 'specialty_id', 'parent_id', mode='before') @classmethod def empty_string_to_none(cls, v): if v == "": return None return v class ContractorCreate(ContractorBase): pass class ContractorUpdate(BaseModel): name: Optional[str] = None ruc: Optional[str] = None contact_name: Optional[str] = None email: Optional[EmailStr] = None phone: Optional[str] = None address: Optional[str] = None specialty_id: Optional[int] = None parent_id: Optional[int] = None is_active: Optional[bool] = None class Contractor(ContractorBase): id: int specialty: Optional[Specialty] = None subcontractors: List['Contractor'] = [] class Config: from_attributes = True