31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
"""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"),
|
|
)
|