Files
drivers_bot/app/schemas/car.py
2026-05-14 19:33:25 +09:00

100 lines
2.7 KiB
Python

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
currency: str = "RUB"
include_depreciation: bool = False
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
currency: str | None = None
include_depreciation: bool | 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)