main
py 29 lines 1.1 KB
Raw
1 from __future__ import annotations
2
3 from helpers.api import ApiHandler, Request, Response
4 from plugins._time_travel.helpers.time_travel import (
5 TimeTravelError,
6 TimeTravelService,
7 WorkspaceRejectedError,
8 resolve_workspace,
9 )
10
11
12 class HistoryPreview(ApiHandler):
13 async def process(self, input: dict, request: Request) -> dict | Response:
14 context_id = str(input.get("context_id") or "").strip()
15 workspace_id = str(input.get("workspace_id") or "").strip()
16 try:
17 workspace = resolve_workspace(
18 context_id,
19 workspace_id=workspace_id,
20 context_loader=self.use_context,
21 )
22 return TimeTravelService(workspace).preview(
23 operation=str(input.get("operation") or ""),
24 commit_hash=str(input.get("commit_hash") or ""),
25 )
26 except WorkspaceRejectedError as exc:
27 return {"ok": False, "locked": True, "error": str(exc)}
28 except TimeTravelError as exc:
29 return {"ok": False, "error": str(exc), "technical_details": getattr(exc, "stderr", "")}