51 lines
2.2 KiB
Python
51 lines
2.2 KiB
Python
from datetime import datetime, timezone
|
|
from decimal import Decimal
|
|
from sqlalchemy import String, DateTime, DECIMAL, Integer, ForeignKey
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
from app.core.database import Base
|
|
|
|
|
|
class VehicleStock(Base):
|
|
__tablename__ = "vehicle_stock"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
|
plate: Mapped[str] = mapped_column(String(10), nullable=False, index=True)
|
|
brand: Mapped[str | None] = mapped_column(String(50))
|
|
model: Mapped[str | None] = mapped_column(String(100))
|
|
version: Mapped[str | None] = mapped_column(String(200))
|
|
registration_date: Mapped[str | None] = mapped_column(String(20))
|
|
mileage: Mapped[int | None] = mapped_column(Integer)
|
|
location: Mapped[str | None] = mapped_column(String(100))
|
|
import_batch: Mapped[str | None] = mapped_column(String(100))
|
|
imported_at: Mapped[datetime] = mapped_column(
|
|
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)
|
|
)
|
|
|
|
|
|
class RepairCostAvg(Base):
|
|
__tablename__ = "repair_costs_avg"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
|
model: Mapped[str] = mapped_column(String(100), nullable=False, index=True)
|
|
avg_cost: Mapped[Decimal | None] = mapped_column(DECIMAL(10, 2))
|
|
import_batch: Mapped[str | None] = mapped_column(String(100))
|
|
imported_at: Mapped[datetime] = mapped_column(
|
|
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)
|
|
)
|
|
|
|
|
|
class VehicleSalesAvg(Base):
|
|
__tablename__ = "vehicle_sales_avg"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
|
model: Mapped[str] = mapped_column(String(100), nullable=False, index=True)
|
|
avg_stock_days: Mapped[Decimal | None] = mapped_column(DECIMAL(6, 1))
|
|
avg_repair_cost: Mapped[Decimal | None] = mapped_column(DECIMAL(10, 2))
|
|
avg_margin_eur: Mapped[Decimal | None] = mapped_column(DECIMAL(10, 2))
|
|
avg_margin_pct: Mapped[Decimal | None] = mapped_column(DECIMAL(5, 2))
|
|
avg_sale_price: Mapped[Decimal | None] = mapped_column(DECIMAL(10, 2))
|
|
import_batch: Mapped[str | None] = mapped_column(String(100))
|
|
imported_at: Mapped[datetime] = mapped_column(
|
|
DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)
|
|
)
|