main
py 30 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 HistoryDiff(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).history_diff(
23 commit_hash=str(input.get("commit_hash") or ""),
24 path=str(input.get("path") or ""),
25 mode=str(input.get("mode") or "commit"),
26 )
27 except WorkspaceRejectedError as exc:
28 return {"ok": False, "locked": True, "error": str(exc)}
29 except TimeTravelError as exc:
30 return {"ok": False, "error": str(exc)}