"""Persistent Earth interactable objects.""" from sqlalchemy import Boolean, Column, DateTime, Float, Index, Integer, JSON, String, Text from sqlalchemy.sql import func from app.db.session import Base class EarthInteractable(Base): __tablename__ = "earth_interactables" id = Column(String(160), primary_key=True) layer = Column(String(80), nullable=False, default="interactables", index=True) kind = Column(String(80), nullable=False, default="default", index=True) label = Column(String(255), nullable=False, default="") description = Column(Text, nullable=False, default="") latitude = Column(Float, nullable=False) longitude = Column(Float, nullable=False) altitude = Column(Float, nullable=True) revision = Column(Integer, nullable=False, default=1) properties = Column(JSON, nullable=False, default=dict) is_deleted = Column(Boolean, nullable=False, default=False, index=True) created_at = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) deleted_at = Column(DateTime(timezone=True), nullable=True, index=True) __table_args__ = ( Index("idx_earth_interactables_layer_deleted", "layer", "is_deleted"), Index("idx_earth_interactables_updated_at", "updated_at"), )