@@ -3,10 +3,10 @@ import type { PrismaClient } from "~/db.server";
33import { prisma } from "~/db.server" ;
44import { displayableEnvironment } from "~/models/runtimeEnvironment.server" ;
55import { clickhouseFactory } from "~/services/clickhouse/clickhouseFactoryInstance.server" ;
6- import { nextScheduledTimestamps } from "~/v3/utils/calculateNextSchedule.server" ;
76import { NextRunListPresenter } from "./NextRunListPresenter.server" ;
87import { scheduleWhereClause } from "~/models/schedules.server" ;
9- import { formatScheduleWindow } from "~/v3/scheduleWindow.server" ;
8+ import { calculateNextScheduleRunTimes , formatScheduleWindow } from "~/v3/scheduleWindow.server" ;
9+ import { env } from "~/env.server" ;
1010
1111type ViewScheduleOptions = {
1212 userId ?: string ;
@@ -52,6 +52,8 @@ export class ViewSchedulePresenter {
5252 } ,
5353 instances : {
5454 select : {
55+ environmentId : true ,
56+ schedulePhase : true ,
5557 environment : {
5658 select : {
5759 id : true ,
@@ -82,8 +84,25 @@ export class ViewSchedulePresenter {
8284 return ;
8385 }
8486
87+ const instance = schedule . instances . find (
88+ ( instance ) => instance . environmentId === environmentId
89+ ) ;
90+ if ( ! instance ) {
91+ return ;
92+ }
93+
8594 const nextRuns = schedule . active
86- ? nextScheduledTimestamps ( schedule . generatorExpression , schedule . timezone , new Date ( ) , 5 )
95+ ? calculateNextScheduleRunTimes ( {
96+ cron : schedule . generatorExpression ,
97+ timezone : schedule . timezone ,
98+ deduplicationKey : schedule . deduplicationKey ,
99+ environmentId,
100+ schedulePhase : instance . schedulePhase ,
101+ phaseSecret : env . ENCRYPTION_KEY ,
102+ windowDurationSeconds : schedule . windowDurationSeconds ,
103+ windowPercentage : schedule . windowPercentage ,
104+ count : 5 ,
105+ } )
87106 : [ ] ;
88107
89108 const runs = includeRunHistory
@@ -101,6 +120,7 @@ export class ViewSchedulePresenter {
101120 timezone : schedule . timezone ,
102121 cron : schedule . generatorExpression ,
103122 cronDescription : schedule . generatorDescription ,
123+ window : formatScheduleWindow ( schedule ) ,
104124 nextRuns,
105125 runs,
106126 environments : schedule . instances . map ( ( instance ) => {
@@ -146,14 +166,15 @@ export class ViewSchedulePresenter {
146166 type : result . schedule . type ,
147167 task : result . schedule . taskIdentifier ,
148168 active : result . schedule . active ,
149- nextRun : result . schedule . nextRuns [ 0 ] ,
169+ nextRun : result . schedule . nextRuns [ 0 ] ?. nominalAt ?? null ,
170+ nextRunEffectiveAt : result . schedule . nextRuns [ 0 ] ?. effectiveAt ?? null ,
150171 generator : {
151172 type : "CRON" ,
152173 expression : result . schedule . cron ,
153174 description : result . schedule . cronDescription ,
154175 } ,
155176 timezone : result . schedule . timezone ,
156- window : formatScheduleWindow ( result . schedule ) ,
177+ window : result . schedule . window ,
157178 externalId : result . schedule . externalId ?? undefined ,
158179 deduplicationKey : result . schedule . userProvidedDeduplicationKey
159180 ? ( result . schedule . deduplicationKey ?? undefined )
0 commit comments