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")