File tree 4 files changed +332
-262
lines changed
migrations/20250308085226_add_task_audio_type
4 files changed +332
-262
lines changed Original file line number Diff line number Diff line change
1
+ import { WorkspaceAuditLogType , WorkspaceTaskEnum } from '@prisma/client' ;
2
+ import { prisma } from './_client.js' ;
3
+ import { createAuditLog } from './auditLog.js' ;
4
+
5
+ export 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
+ await prisma . workspaceTask . update ( {
40
+ where : {
41
+ id : task . id ,
42
+ } ,
43
+ data : {
44
+ status : WorkspaceTaskEnum . Failed ,
45
+ meta,
46
+ } ,
47
+ } ) ;
48
+ createAuditLog ( {
49
+ workspaceId,
50
+ relatedId : task . id ,
51
+ relatedType : WorkspaceAuditLogType . Task ,
52
+ content : `Task ${ type } failed, result: ${ JSON . stringify ( meta ) } ` ,
53
+ } ) ;
54
+ }
55
+ }
You can’t perform that action at this time.
0 commit comments