from pydantic import BaseModel, Field, field_validator from typing import Optional from uuid import UUID class CredencialBaseSchema(BaseModel): id: str = Field(..., description="UUID de la credencial") user: str = Field(..., description="Usuario de la credencial") password: str = Field(..., description="Contraseña de la credencial") efirma: str = Field(..., description="E-firma de la credencial") key: str = Field(..., description="Key de la credencial") cer: str = Field(..., description="Cer de la credencial") is_active: bool = Field(..., description="Indica si la credencial está activa") organizacion: UUID = Field(..., description="ID de la organización asociada") @field_validator('id') def validate_id(cls, v): if not v or not isinstance(v, str): raise ValueError('id must be a non-empty string') return v @field_validator('user') def validate_user(cls, v): if not v or not isinstance(v, str): raise ValueError('user must be a non-empty string') return v @field_validator('password') def validate_password(cls, v): if not v or not isinstance(v, str): raise ValueError('password must be a non-empty string') return v @field_validator('efirma') def validate_efirma(cls, v): if not v or not isinstance(v, str): raise ValueError('efirma must be a non-empty string') return v @field_validator('key') def validate_key(cls, v): if not v or not isinstance(v, str): raise ValueError('key must be a non-empty string') return v @field_validator('cer') def validate_cer(cls, v): if not v or not isinstance(v, str): raise ValueError('cer must be a non-empty string') return v @field_validator('organizacion') def validate_organizacion(cls, v): if not v or not isinstance(v, UUID): raise ValueError('organizacion must be a valid UUID') return v