from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class LocationBase(BaseModel): """Base schema for location data.""" name: str latitude: float = Field(..., le=90, ge=-90) longitude: float = Field(..., le=180, ge=-180) country: Optional[str] = None is_default: Optional[bool] = False class LocationCreate(LocationBase): """Schema for creating a new location.""" pass class LocationUpdate(BaseModel): """Schema for updating an existing location.""" name: Optional[str] = None latitude: Optional[float] = Field(None, le=90, ge=-90) longitude: Optional[float] = Field(None, le=180, ge=-180) country: Optional[str] = None is_default: Optional[bool] = None class LocationInDBBase(LocationBase): """Base schema for location with DB fields.""" id: int user_id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class Location(LocationInDBBase): """Schema for location response data.""" pass