MCPcopy Index your code
hub / github.com/msgbyte/tianji / runTask

Function runTask

src/server/model/task.ts:5–56  ·  view source on GitHub ↗
(
  workspaceId: string,
  type: string,
  taskFn: () => Promise<any>
)

Source from the content-addressed store, hash-verified

3import { createAuditLog } from './auditLog.js';
4
5export async function runTask(
6 workspaceId: string,
7 type: string,
8 taskFn: () => Promise<any>
9) {
10 const task = await prisma.workspaceTask.create({
11 data: {
12 workspaceId,
13 type,
14 status: WorkspaceTaskEnum.Pending,
15 },
16 });
17
18 const start = Date.now();
19 try {
20 const result = await taskFn();
21 const meta = { result, usageTime: Date.now() - start };
22 await prisma.workspaceTask.update({
23 where: {
24 id: task.id,
25 },
26 data: {
27 status: WorkspaceTaskEnum.Success,
28 meta,
29 },
30 });
31 createAuditLog({
32 workspaceId,
33 relatedId: task.id,
34 relatedType: WorkspaceAuditLogType.Task,
35 content: `Task ${type} success, result: ${JSON.stringify(meta)}`,
36 });
37 } catch (err) {
38 const meta = { error: String(err), usageTime: Date.now() - start };
39 console.error('run task error:', meta);
40 await prisma.workspaceTask.update({
41 where: {
42 id: task.id,
43 },
44 data: {
45 status: WorkspaceTaskEnum.Failed,
46 meta,
47 },
48 });
49 createAuditLog({
50 workspaceId,
51 relatedId: task.id,
52 relatedType: WorkspaceAuditLogType.Task,
53 content: `Task ${type} failed, result: ${JSON.stringify(meta)}`,
54 });
55 }
56}

Callers 2

Calls 3

createAuditLogFunction · 0.85
nowMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected