54 lines
2.3 KiB
Python
Executable File
54 lines
2.3 KiB
Python
Executable File
from sqlalchemy import Column, Integer, String, ForeignKey, Boolean, Float, JSON, Date
|
|
from sqlalchemy.orm import relationship
|
|
from app.db.base import Base
|
|
|
|
# 1. Kategória (Autó, Motor, Kisteher...)
|
|
class VehicleCategory(Base):
|
|
__tablename__ = "vehicle_categories"
|
|
__table_args__ = {"schema": "data"}
|
|
id = Column(Integer, primary_key=True)
|
|
name_key = Column(String, nullable=False) # i18n kulcs: 'CAR', 'MOTORCYCLE'
|
|
|
|
# 2. Márka (Audi, Honda, BMW...)
|
|
class VehicleMake(Base):
|
|
__tablename__ = "vehicle_makes"
|
|
__table_args__ = {"schema": "data"}
|
|
id = Column(Integer, primary_key=True)
|
|
name = Column(String, unique=True, nullable=False)
|
|
logo_url = Column(String, nullable=True)
|
|
|
|
# 3. Modell és Generáció (pl. Audi A3 -> A3 8V)
|
|
class VehicleModel(Base):
|
|
__tablename__ = "vehicle_models"
|
|
__table_args__ = {"schema": "data"}
|
|
id = Column(Integer, primary_key=True)
|
|
make_id = Column(Integer, ForeignKey("data.vehicle_makes.id"))
|
|
category_id = Column(Integer, ForeignKey("data.vehicle_categories.id"))
|
|
name = Column(String, nullable=False)
|
|
generation_name = Column(String, nullable=True) # pl: "8V Facelift"
|
|
production_start_year = Column(Integer, nullable=True)
|
|
production_end_year = Column(Integer, nullable=True)
|
|
|
|
# 4. Motor és Hajtáslánc (Technikai specifikációk)
|
|
class VehicleEngine(Base):
|
|
__tablename__ = "vehicle_engines"
|
|
__table_args__ = {"schema": "data"}
|
|
id = Column(Integer, primary_key=True)
|
|
model_id = Column(Integer, ForeignKey("data.vehicle_models.id"))
|
|
|
|
engine_code = Column(String, nullable=True)
|
|
fuel_type = Column(String, nullable=False) # 'Petrol', 'Diesel', 'Hybrid', 'EV'
|
|
displacement_ccm = Column(Integer, nullable=True)
|
|
power_kw = Column(Integer, nullable=True)
|
|
torque_nm = Column(Integer, nullable=True)
|
|
transmission_type = Column(String, nullable=True) # 'Manual', 'Automatic'
|
|
gears_count = Column(Integer, nullable=True)
|
|
drive_type = Column(String, nullable=True) # 'FWD', 'RWD', 'AWD'
|
|
|
|
# 5. Opciók Katalógusa (Gyári extrák listája)
|
|
class VehicleOptionCatalog(Base):
|
|
__tablename__ = "vehicle_options_catalog"
|
|
__table_args__ = {"schema": "data"}
|
|
id = Column(Integer, primary_key=True)
|
|
category = Column(String) # 'Security', 'Comfort', 'Multimedia'
|
|
name_key = Column(String) # 'MATRIX_LED' |