from __future__ import annotations from datetime import datetime from typing import Optional from pydantic import BaseModel, Field, ConfigDict class HostBase(BaseModel): name: str = Field(..., min_length=1) ip_address: str = Field(..., min_length=3) ansible_group: Optional[str] = None status: Optional[str] = Field(default="unknown") reachable: Optional[bool] = False last_seen: Optional[datetime] = None class HostCreate(HostBase): pass class HostUpdate(BaseModel): ansible_group: Optional[str] = None status: Optional[str] = None reachable: Optional[bool] = None last_seen: Optional[datetime] = None deleted_at: Optional[datetime] = None class HostOut(HostBase): id: str created_at: datetime updated_at: datetime deleted_at: Optional[datetime] = None model_config = ConfigDict(from_attributes=True)