Newer
Older
vmk-360-data_collector / src / vmk_data_collector / models / property_snapshot.py
@Eugene Sukhodolskiy Eugene Sukhodolskiy 1 day ago 802 bytes feat: implement review items 1-7
from datetime import datetime

from sqlalchemy import JSON, TIMESTAMP, ForeignKey, Index, Integer, func
from sqlalchemy.orm import Mapped, mapped_column

from vmk_data_collector.db.base import Base


class PropertySnapshot(Base):
    __tablename__ = "property_snapshots"

    id: Mapped[int] = mapped_column(Integer, primary_key=True)
    property_id: Mapped[int] = mapped_column(
        ForeignKey("property_listings.id", ondelete="CASCADE"), nullable=False
    )
    snapshot_data: Mapped[dict] = mapped_column(JSON, default=dict)
    changed_fields: Mapped[dict] = mapped_column(JSON, default=dict)
    created_at: Mapped[datetime] = mapped_column(
        TIMESTAMP(timezone=True), server_default=func.now()
    )

    __table_args__ = (Index("ix_property_snapshots_property_id", "property_id"),)