seed vehicle trims catalog

This commit is contained in:
VPN SaaS Dev
2026-05-12 04:44:19 +09:00
parent f7a3b8be54
commit b5012ec6e7
9 changed files with 335 additions and 21 deletions

View File

@@ -1,7 +1,7 @@
from datetime import date, datetime
from decimal import Decimal
from sqlalchemy import Date, DateTime, ForeignKey, Numeric, String, UniqueConstraint, func
from sqlalchemy import Date, DateTime, ForeignKey, Integer, Numeric, String, UniqueConstraint, func
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.db.base import Base
@@ -15,6 +15,7 @@ class Car(Base):
name: Mapped[str] = mapped_column(String(160))
make: Mapped[str | None] = mapped_column(String(80))
model: Mapped[str | None] = mapped_column(String(80))
trim: Mapped[str | None] = mapped_column(String(120))
year: Mapped[int | None]
plate_number: Mapped[str | None] = mapped_column(String(32))
vin: Mapped[str | None] = mapped_column(String(32))
@@ -53,3 +54,23 @@ class CarModel(Base):
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
make = relationship("CarMake", back_populates="models")
trims = relationship("CarTrim", back_populates="model", cascade="all, delete-orphan")
class CarTrim(Base):
__tablename__ = "car_trims"
__table_args__ = (UniqueConstraint("model_id", "name", name="uq_car_trims_model_name"),)
id: Mapped[int] = mapped_column(primary_key=True)
model_id: Mapped[int] = mapped_column(ForeignKey("car_models.id", ondelete="CASCADE"), index=True)
name: Mapped[str] = mapped_column(String(120), index=True)
body_type: Mapped[str | None] = mapped_column(String(60))
fuel_type: Mapped[str | None] = mapped_column(String(32))
transmission: Mapped[str | None] = mapped_column(String(32))
drive_type: Mapped[str | None] = mapped_column(String(32))
year_from: Mapped[int | None] = mapped_column(Integer)
year_to: Mapped[int | None] = mapped_column(Integer)
market: Mapped[str | None] = mapped_column(String(80))
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
model = relationship("CarModel", back_populates="trims")