from datetime import date, datetime from decimal import Decimal from pydantic import BaseModel, ConfigDict class CarBase(BaseModel): name: str make: str | None = None model: str | None = None trim: str | None = None year: int | None = None plate_number: str | None = None vin: str | None = None fuel_type: str | None = None target_consumption_l_per_100km: Decimal | None = None fuel_tank_volume_l: Decimal | None = None engine_oil_type: str | None = None engine_oil_volume_l: Decimal | None = None transmission_fluid_type: str | None = None transmission_fluid_volume_l: Decimal | None = None coolant_type: str | None = None brake_fluid_type: str | None = None tire_pressure_front_bar: Decimal | None = None tire_pressure_rear_bar: Decimal | None = None purchase_date: date | None = None purchase_price: Decimal | None = None current_odometer: int | None = None class CarCreate(CarBase): owner_id: int | None = None class CarUpdate(BaseModel): name: str | None = None make: str | None = None model: str | None = None trim: str | None = None year: int | None = None plate_number: str | None = None vin: str | None = None fuel_type: str | None = None target_consumption_l_per_100km: Decimal | None = None fuel_tank_volume_l: Decimal | None = None engine_oil_type: str | None = None engine_oil_volume_l: Decimal | None = None transmission_fluid_type: str | None = None transmission_fluid_volume_l: Decimal | None = None coolant_type: str | None = None brake_fluid_type: str | None = None tire_pressure_front_bar: Decimal | None = None tire_pressure_rear_bar: Decimal | None = None purchase_date: date | None = None purchase_price: Decimal | None = None current_odometer: int | None = None class CarRead(CarBase): id: int owner_id: int created_at: datetime model_config = ConfigDict(from_attributes=True) class CarTrimRead(BaseModel): id: int name: str body_type: str | None = None fuel_type: str | None = None transmission: str | None = None drive_type: str | None = None year_from: int | None = None year_to: int | None = None market: str | None = None model_config = ConfigDict(from_attributes=True) class CarModelRead(BaseModel): id: int name: str trims: list[CarTrimRead] = [] model_config = ConfigDict(from_attributes=True) class CarMakeRead(BaseModel): id: int name: str country: str | None = None models: list[CarModelRead] = [] model_config = ConfigDict(from_attributes=True)