1- import { prisma } from "~/db.server " ;
1+ import type { PrismaClient } from "@trigger.dev/database " ;
22import {
33 LOGS_SEARCH_PROJECTOR_STATE_ID ,
44 type LogsSearchProjectorState ,
55 type LogsSearchProjectorStateStore ,
66} from "~/services/logsSearchProjector.server" ;
77
8+ type LogsSearchProjectorDatabase = Pick < PrismaClient , "logsSearchProjectorState" | "$executeRaw" > ;
9+
810export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorStateStore {
11+ constructor ( private readonly database : LogsSearchProjectorDatabase ) { }
12+
913 async initialize ( boundary : Date ) : Promise < LogsSearchProjectorState > {
10- return prisma . logsSearchProjectorState . upsert ( {
14+ return this . database . logsSearchProjectorState . upsert ( {
1115 where : { id : LOGS_SEARCH_PROJECTOR_STATE_ID } ,
1216 create : {
1317 id : LOGS_SEARCH_PROJECTOR_STATE_ID ,
@@ -19,7 +23,7 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
1923 }
2024
2125 async find ( ) : Promise < LogsSearchProjectorState | null > {
22- return prisma . logsSearchProjectorState . findFirst ( {
26+ return this . database . logsSearchProjectorState . findFirst ( {
2327 where : { id : LOGS_SEARCH_PROJECTOR_STATE_ID } ,
2428 } ) ;
2529 }
@@ -31,7 +35,7 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
3135 }
3236
3337 async acquireLease ( token : string , leaseDurationMs : number ) : Promise < boolean > {
34- const count = await prisma . $executeRaw `
38+ const count = await this . database . $executeRaw `
3539 UPDATE "LogsSearchProjectorState"
3640 SET
3741 "leaseToken" = ${ token } ,
@@ -49,7 +53,7 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
4953 }
5054
5155 async renewLease ( token : string , leaseDurationMs : number ) : Promise < boolean > {
52- const count = await prisma . $executeRaw `
56+ const count = await this . database . $executeRaw `
5357 UPDATE "LogsSearchProjectorState"
5458 SET
5559 "leaseExpiresAt" = CURRENT_TIMESTAMP + (${ leaseDurationMs } * INTERVAL '1 millisecond'),
@@ -62,14 +66,14 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
6266 }
6367
6468 async releaseLease ( token : string ) : Promise < void > {
65- await prisma . logsSearchProjectorState . updateMany ( {
69+ await this . database . logsSearchProjectorState . updateMany ( {
6670 where : { id : LOGS_SEARCH_PROJECTOR_STATE_ID , leaseToken : token } ,
6771 data : { leaseToken : null , leaseExpiresAt : null } ,
6872 } ) ;
6973 }
7074
7175 async advanceLive ( token : string , expected : Date , next : Date ) : Promise < boolean > {
72- const result = await prisma . logsSearchProjectorState . updateMany ( {
76+ const result = await this . database . logsSearchProjectorState . updateMany ( {
7377 where : {
7478 id : LOGS_SEARCH_PROJECTOR_STATE_ID ,
7579 paused : false ,
@@ -87,7 +91,7 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
8791 next : Date ,
8892 expectedTarget : Date
8993 ) : Promise < boolean > {
90- const result = await prisma . logsSearchProjectorState . updateMany ( {
94+ const result = await this . database . logsSearchProjectorState . updateMany ( {
9195 where : {
9296 id : LOGS_SEARCH_PROJECTOR_STATE_ID ,
9397 paused : false ,
@@ -104,21 +108,21 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
104108 }
105109
106110 async pause ( ) : Promise < void > {
107- await prisma . logsSearchProjectorState . update ( {
111+ await this . database . logsSearchProjectorState . update ( {
108112 where : { id : LOGS_SEARCH_PROJECTOR_STATE_ID } ,
109113 data : { paused : true } ,
110114 } ) ;
111115 }
112116
113117 async resume ( ) : Promise < void > {
114- await prisma . logsSearchProjectorState . update ( {
118+ await this . database . logsSearchProjectorState . update ( {
115119 where : { id : LOGS_SEARCH_PROJECTOR_STATE_ID } ,
116120 data : { paused : false } ,
117121 } ) ;
118122 }
119123
120124 async setBackfillTarget ( expectedHistorical : Date , target : Date ) : Promise < boolean > {
121- const result = await prisma . logsSearchProjectorState . updateMany ( {
125+ const result = await this . database . logsSearchProjectorState . updateMany ( {
122126 where : {
123127 id : LOGS_SEARCH_PROJECTOR_STATE_ID ,
124128 historicalWatermark : expectedHistorical ,
@@ -130,7 +134,7 @@ export class PrismaLogsSearchProjectorStateStore implements LogsSearchProjectorS
130134 }
131135
132136 async cancelBackfill ( ) : Promise < void > {
133- await prisma . logsSearchProjectorState . update ( {
137+ await this . database . logsSearchProjectorState . update ( {
134138 where : { id : LOGS_SEARCH_PROJECTOR_STATE_ID } ,
135139 data : { backfillTarget : null } ,
136140 } ) ;
0 commit comments