fester/backend/api/replay.py

79 lines
1.4 KiB
Python

from fastapi import APIRouter
from events.replay import ReplayController
router = APIRouter()
# in-memory demo store (later replace with session DB)
REPLAY_SESSIONS = {}
def get_session(journal_id):
return REPLAY_SESSIONS.get(journal_id)
# -------------------------
# START REPLAY SESSION
# -------------------------
@router.post("/replay/start")
def start_replay(journal):
session = ReplayController(journal)
session_id = str(id(session))
REPLAY_SESSIONS[session_id] = session
return {
"session_id": session_id,
"event_count": len(session.timeline)
}
# -------------------------
# STEP FORWARD
# -------------------------
@router.post("/replay/step")
def replay_step(session_id: str):
session = get_session(session_id)
event = session.step()
return {
"event": event,
"index": session.index
}
# -------------------------
# SEEK
# -------------------------
@router.post("/replay/seek")
def replay_seek(session_id: str, timestamp: float):
session = get_session(session_id)
event = session.seek(timestamp)
return {
"event": event,
"index": session.index
}
# -------------------------
# RESET
# -------------------------
@router.post("/replay/reset")
def replay_reset(session_id: str):
session = get_session(session_id)
event = session.reset()
return {
"event": event,
"index": session.index
}