from datetime import datetime from typing import Optional from pydantic import BaseModel, Field from app.models.vehicle import VehicleType class VehicleBase(BaseModel): vehicle_number: str vehicle_type: VehicleType capacity: int = Field(..., gt=0) class VehicleCreate(VehicleBase): pass class VehicleUpdate(BaseModel): vehicle_number: Optional[str] = None vehicle_type: Optional[VehicleType] = None capacity: Optional[int] = Field(None, gt=0) is_active: Optional[bool] = None class VehicleInDBBase(VehicleBase): id: int is_active: bool class Config: from_attributes = True class Vehicle(VehicleInDBBase): pass class ScheduleBase(BaseModel): vehicle_id: int departure_location: str arrival_location: str departure_time: datetime arrival_time: datetime available_seats: int = Field(..., ge=0) class ScheduleCreate(ScheduleBase): pass class ScheduleUpdate(BaseModel): departure_location: Optional[str] = None arrival_location: Optional[str] = None departure_time: Optional[datetime] = None arrival_time: Optional[datetime] = None available_seats: Optional[int] = Field(None, ge=0) is_active: Optional[bool] = None class ScheduleInDBBase(ScheduleBase): id: int is_active: bool class Config: from_attributes = True class Schedule(ScheduleInDBBase): vehicle: Vehicle class ScheduleWithoutVehicle(ScheduleInDBBase): pass