1
- import type { EventDispatcher , EventRecord } from "@trigger.dev/database" ;
2
- import type { EventFilter } from "@trigger.dev/core" ;
3
- import { EventFilterSchema , eventFilterMatches } from "@trigger.dev/core" ;
1
+ import type { EventRecord } from "@trigger.dev/database" ;
4
2
import { $transaction , PrismaClientOrTransaction , prisma } from "~/db.server" ;
5
- import { logger } from "~/services/logger.server" ;
6
3
import { workerQueue } from "../worker.server" ;
7
4
import { AuthenticatedEnvironment } from "../apiAuth.server" ;
8
5
@@ -13,17 +10,21 @@ export class CancelEventService {
13
10
this . #prismaClient = prismaClient ;
14
11
}
15
12
16
- public async call ( environment : AuthenticatedEnvironment , eventId : string ) : Promise < EventRecord | undefined > {
13
+ public async call (
14
+ environment : AuthenticatedEnvironment ,
15
+ eventId : string
16
+ ) : Promise < EventRecord | undefined > {
17
17
return await $transaction (
18
18
this . #prismaClient,
19
19
async ( tx ) => {
20
- const event = await tx . eventRecord . findFirst ( {
20
+ const event = await tx . eventRecord . findUnique ( {
21
21
select : {
22
22
id : true ,
23
23
name : true ,
24
24
createdAt : true ,
25
25
updatedAt : true ,
26
26
environmentId : true ,
27
+ cancelledAt : true ,
27
28
runs : {
28
29
select : {
29
30
id : true ,
@@ -34,23 +35,29 @@ export class CancelEventService {
34
35
} ,
35
36
} ,
36
37
where : {
37
- id : eventId ,
38
- environmentId : environment . id ,
38
+ eventId_environmentId : {
39
+ eventId : eventId ,
40
+ environmentId : environment . id ,
41
+ } ,
39
42
} ,
40
43
} ) ;
41
44
42
45
if ( ! event ) {
43
46
return ;
44
47
}
45
48
49
+ if ( event . cancelledAt ) {
50
+ return event ;
51
+ }
52
+
46
53
//update the cancelledAt column in the eventRecord table
47
54
const updatedEvent = await prisma . eventRecord . update ( {
48
55
where : { id : event . id } ,
49
56
data : { cancelledAt : new Date ( ) } ,
50
57
} ) ;
51
58
52
59
// Dequeue the event after the db has been updated
53
- await workerQueue . dequeue ( event . id , { tx : prisma } ) ;
60
+ await workerQueue . dequeue ( ` event: ${ event . id } ` , { tx : prisma } ) ;
54
61
55
62
return updatedEvent ;
56
63
} ,
0 commit comments