diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py index 96e2dc3..d35b95b 100644 --- a/backend/app/models/__init__.py +++ b/backend/app/models/__init__.py @@ -2,5 +2,6 @@ from app.models.user import User from app.models.session import Session from app.models.world import World from app.models.asset import Asset +from app.models.world_visit import WorldVisit -__all__ = ["User", "Session", "World", "Asset"] +__all__ = ["User", "Session", "World", "Asset", "WorldVisit"] diff --git a/backend/app/models/world_visit.py b/backend/app/models/world_visit.py new file mode 100644 index 0000000..d915c98 --- /dev/null +++ b/backend/app/models/world_visit.py @@ -0,0 +1,26 @@ +from sqlalchemy import Column, DateTime, ForeignKey, Index, Integer, String +from sqlalchemy.orm import relationship +from sqlalchemy.sql import func + +from app.database import Base + + +class WorldVisit(Base): + __tablename__ = "world_visits" + + id = Column(Integer, primary_key=True, index=True) + world_id = Column( + Integer, ForeignKey("worlds.id", ondelete="CASCADE"), nullable=False + ) + user_id = Column( + Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=True + ) + anonymous_token = Column(String(255), nullable=True) + visited_at = Column(DateTime(timezone=True), server_default=func.now()) + + __table_args__ = ( + Index("ix_world_visits_world_id_visited_at", "world_id", "visited_at"), + ) + + world = relationship("World", back_populates="visits") + user = relationship("User")