from sqlalchemy import Boolean, Column, Float, Integer, String, Enum import enum from database import Base class EngineType(enum.Enum): PETROL = "бензиновый" DIESEL = "дизельный" ELECTRIC = "электрический" class HybridType(enum.Enum): NONE = "не гибрид" HYBRID = "электрогибрид" PHEV = "электрогибрид(PHEV)" class PowerRatio(enum.Enum): ICE_GREATER = "ДВС > ЭД" ELECTRIC_GREATER = "ЭД > ДВС" NA = "не применимо" class Admin(Base): __tablename__ = "admins" id = Column(Integer, primary_key=True, index=True) username = Column(String, unique=True, index=True) hashed_password = Column(String) is_active = Column(Boolean, default=True) class Car(Base): __tablename__ = "cars" id = Column(Integer, primary_key=True, index=True) image = Column(String, nullable=True) # путь к изображению или URL name = Column(String, index=True) price = Column(Float) base_price = Column(Float) # цена без калькулирования country_of_origin = Column(String) year = Column(Integer) drive_type = Column(String) # привод mileage = Column(Integer, nullable=True) # пробег engine_capacity = Column(Float, nullable=True) # объем двигателя engine_power = Column(Integer, nullable=True) # мощность ДВС engine_type = Column(Enum(EngineType)) # тип двигателя electric_motor_power = Column(Integer, nullable=True) # мощность электродвигателя hybrid_type = Column(Enum(HybridType), default=HybridType.NONE) # тип гибрида power_ratio = Column(Enum(PowerRatio), default=PowerRatio.NA) # соотношение мощности class Personal(Base): __tablename__ = "personal" id = Column(Integer, primary_key=True, index=True) name = Column(String, index=True) # ФИО сотрудника surname = Column(String, index=True) # ФИО сотрудника role = Column(String) # Должность (произвольная строка) photo = Column(String, nullable=True) # путь к фотографии