bree icon indicating copy to clipboard operation
bree copied to clipboard

[feat] getting future execution timeline/schedule for jobs

Open Zireael opened this issue 4 years ago • 6 comments

Hi Is it possible to easily get a list of dates/times all jobs or a specific job will be executed next?

Please see below some proposed syntax and use cases/outputs:

bree.getSchedule() // outputs the earliest (1) upcoming job

>> [
      { name: "job_3457", scheduled: "2021-01-23T13:02:58.838Z" }
   ]
bree.getSchedule( { job: ["job_6573", "job_6573"] } ) // outputs the earliest (1) upcoming job for each "job_6573" and "job_6573". 

>> [
      { name: "job_3457", scheduled: "2021-01-23T13:02:58.838Z" },
      { name: "job_6573", scheduled: "2021-01-23T13:14:53.177Z" },
   ]
bree.getSchedule( { job: [ "job_6573", "job_3457" ], count: 2 } ) // outputs the earliest (2) upcoming jobs for each "job_6573" and "job_3457". 

>> [
      { name: "job_3457", scheduled: "2021-01-23T13:02:58.838Z" },
      { name: "job_6573", scheduled: "2021-01-23T13:14:53.177Z" },
      { name: "job_3457", scheduled: "2021-01-24T13:02:58.838Z" },
      { name: "job_6573", scheduled: "2021-01-27T13:14:53.177Z" },
   ]
bree.getSchedule( { dateStart: "2021-01-23T12:00:00.000Z", dateEnd: "2021-01-29T12:00:00.000Z" } ) // returns all jobs scheduled between specified dates

>> [
      { name: "job_3457", scheduled: "2021-01-23T13:02:58.838Z" },
      { name: "job_6573", scheduled: "2021-01-23T13:14:53.177Z" },
      { name: "job_3457", scheduled: "2021-01-24T13:02:58.838Z" },
      { name: "job_3457", scheduled: "2021-01-25T13:02:58.838Z" },
      { name: "job_3457", scheduled: "2021-01-26T13:02:58.838Z" },
      { name: "job_3457", scheduled: "2021-01-27T13:02:58.838Z" },
      { name: "job_6573", scheduled: "2021-01-27T13:14:53.177Z" },
      { name: "job_3457", scheduled: "2021-01-28T13:02:58.838Z" },
   ];

bree.getSchedule( { job: [ "job_6573" ], dateStart: "2021-01-23T12:00:00.000Z", dateEnd: "2021-01-29T12:00:00.000Z"} ) // returns all jobs for "job_6573" scheduled between specified dates

>> [
      { name: "job_6573", scheduled: "2021-01-23T13:14:53.177Z" },
      { name: "job_6573", scheduled: "2021-01-27T13:14:53.177Z" },
   ];

Zireael avatar Jan 23 '21 13:01 Zireael

A PR would be welcome for this.

shadowgate15 avatar Mar 20 '21 15:03 shadowgate15

Use of Cron Parser can help us out? Using their feature of next and previous.

DynamiteC avatar Nov 09 '21 12:11 DynamiteC

later can get next/previous, which is how we schedule all of the intervals. It is just a functionality that needs to be written.

shadowgate15 avatar Nov 09 '21 21:11 shadowgate15

Can i help?

DynamiteC avatar Nov 10 '21 02:11 DynamiteC

Please do! We are always open to reviewing PR's.

shadowgate15 avatar Nov 10 '21 02:11 shadowgate15

PR welcome @DynamiteC!

niftylettuce avatar Jan 17 '22 23:01 niftylettuce