diff --git a/backend/app/models/motornet_valuation.py b/backend/app/models/motornet_valuation.py new file mode 100644 index 0000000..792b802 --- /dev/null +++ b/backend/app/models/motornet_valuation.py @@ -0,0 +1,51 @@ +from datetime import datetime, timezone +from decimal import Decimal +from sqlalchemy import ( + String, DateTime, DECIMAL, Integer, Text, + ForeignKey, JSON +) +from sqlalchemy.orm import Mapped, mapped_column, relationship +from app.core.database import Base + + +class MotornetValuation(Base): + __tablename__ = "motornet_valuations" + + id: Mapped[int] = mapped_column(Integer, primary_key=True) + valuation_id: Mapped[int] = mapped_column(Integer, ForeignKey("valuations.id"), nullable=False, index=True) + plate: Mapped[str] = mapped_column(String(10), nullable=False, index=True) + motornet_code: Mapped[str | None] = mapped_column(String(20)) + fetched_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) + ) + + registration_year: Mapped[int | None] = mapped_column(Integer) + registration_month: Mapped[int | None] = mapped_column(Integer) + mileage: Mapped[int | None] = mapped_column(Integer) + + motornet_id: Mapped[int | None] = mapped_column(Integer) + ediz_dati: Mapped[str | None] = mapped_column(String(20)) + brand_name: Mapped[str | None] = mapped_column(String(100)) + model_description: Mapped[str | None] = mapped_column(String(200)) + allestimento: Mapped[str | None] = mapped_column(String(255)) + alimentazione: Mapped[str | None] = mapped_column(String(100)) + immagine_url: Mapped[str | None] = mapped_column(String(500)) + xml_url: Mapped[str | None] = mapped_column(String(500)) + percorrenza_media_km: Mapped[int | None] = mapped_column(Integer) + + quotazione_blu: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + quotazione_blu_km: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + quotazione_giallo: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + quotazione_giallo_km: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + quotazione_blu_totale: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + quotazione_giallo_totale: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + variazione_km: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + + prezzo_listino: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + prezzo_accessori: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + totale_riparazioni_carrozzeria: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + totale_riparazioni_meccanica: Mapped[Decimal | None] = mapped_column(DECIMAL(12, 2)) + + raw_response: Mapped[dict | None] = mapped_column(JSON) + + valuation: Mapped["Valuation"] = relationship("Valuation", back_populates="motornet_valuations")