from pydantic import BaseModel from typing import Optional from datetime import datetime from decimal import Decimal class TripBase(BaseModel): title: str description: Optional[str] = None start_date: datetime end_date: datetime budget: Optional[Decimal] = None status: str = "planned" class TripCreate(TripBase): pass class TripUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None start_date: Optional[datetime] = None end_date: Optional[datetime] = None budget: Optional[Decimal] = None status: Optional[str] = None class TripResponse(TripBase): id: int user_id: int created_at: datetime updated_at: Optional[datetime] = None class Config: from_attributes = True class ItineraryBase(BaseModel): destination_id: int day_number: int activity: str description: Optional[str] = None start_time: Optional[datetime] = None end_time: Optional[datetime] = None class ItineraryCreate(ItineraryBase): pass class ItineraryResponse(ItineraryBase): id: int trip_id: int created_at: datetime class Config: from_attributes = True