Add days schedule trigger (#10800)
<img width="1470" alt="image" src="https://github.com/user-attachments/assets/660d79ba-60c7-4874-aa82-80a7575366ba" />
This commit is contained in:
@ -39,6 +39,10 @@ export type WorkflowManualTrigger = BaseTrigger & {
|
||||
export type WorkflowCronTrigger = BaseTrigger & {
|
||||
type: WorkflowTriggerType.CRON;
|
||||
settings: (
|
||||
| {
|
||||
type: 'DAYS';
|
||||
schedule: { day: number; hour: number; minute: number };
|
||||
}
|
||||
| {
|
||||
type: 'HOURS';
|
||||
schedule: { hour: number; minute: number };
|
||||
|
||||
@ -39,6 +39,20 @@ describe('computeCronPatternFromSchedule', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should return the correct cron pattern for DAYS type', () => {
|
||||
const trigger: WorkflowCronTrigger = {
|
||||
name: '',
|
||||
type: WorkflowTriggerType.CRON,
|
||||
settings: {
|
||||
type: 'DAYS',
|
||||
schedule: { day: 31, hour: 10, minute: 30 },
|
||||
outputSchema: {},
|
||||
},
|
||||
};
|
||||
|
||||
expect(computeCronPatternFromSchedule(trigger)).toBe('30 10 */31 * *');
|
||||
});
|
||||
|
||||
it('should return the correct cron pattern for HOURS type', () => {
|
||||
const trigger: WorkflowCronTrigger = {
|
||||
name: '',
|
||||
|
||||
@ -100,6 +100,35 @@ function assertCronTriggerSettingsAreValid(settings: any) {
|
||||
return;
|
||||
}
|
||||
|
||||
case 'DAYS': {
|
||||
if (!settings.schedule) {
|
||||
throw new WorkflowTriggerException(
|
||||
'No schedule provided in cron trigger',
|
||||
WorkflowTriggerExceptionCode.INVALID_WORKFLOW_TRIGGER,
|
||||
);
|
||||
}
|
||||
if (settings.schedule.day <= 0) {
|
||||
throw new WorkflowTriggerException(
|
||||
'Invalid day value. Should be integer greater than 1',
|
||||
WorkflowTriggerExceptionCode.INVALID_WORKFLOW_TRIGGER,
|
||||
);
|
||||
}
|
||||
if (settings.schedule.hour < 0 || settings.schedule.hour > 23) {
|
||||
throw new WorkflowTriggerException(
|
||||
'Invalid hour value. Should be integer between 0 and 23',
|
||||
WorkflowTriggerExceptionCode.INVALID_WORKFLOW_TRIGGER,
|
||||
);
|
||||
}
|
||||
if (settings.schedule.minute < 0 || settings.schedule.minute > 59) {
|
||||
throw new WorkflowTriggerException(
|
||||
'Invalid minute value. Should be integer between 0 and 59',
|
||||
WorkflowTriggerExceptionCode.INVALID_WORKFLOW_TRIGGER,
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
case 'HOURS': {
|
||||
if (!settings.schedule) {
|
||||
throw new WorkflowTriggerException(
|
||||
|
||||
@ -26,6 +26,13 @@ export const computeCronPatternFromSchedule = (
|
||||
|
||||
return trigger.settings.pattern;
|
||||
}
|
||||
case 'DAYS': {
|
||||
const pattern = `${trigger.settings.schedule.minute} ${trigger.settings.schedule.hour} */${trigger.settings.schedule.day} * *`;
|
||||
|
||||
validatePattern(pattern);
|
||||
|
||||
return pattern;
|
||||
}
|
||||
case 'HOURS': {
|
||||
const pattern = `${trigger.settings.schedule.minute} */${trigger.settings.schedule.hour} * * *`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user