Files
triggerdotdev--trigger.dev/apps/docs/reference/schedule-event.mdx
T
2023-01-26 10:12:57 +00:00

69 lines
1.7 KiB
Plaintext

---
title: "scheduleEvent Trigger"
sidebarTitle: "scheduleEvent"
description: "Run a workflow on a recurring schedule."
---
## Usage
```ts
import { scheduleEvent } from "@trigger.dev/sdk";
new Trigger({
id: "usage",
name: "usage",
on: scheduleEvent({ rateof: { minutes: 10 } }),
run: async (event, ctx) => {},
}).listen();
```
## Options
You must use one of the following options, but not both:
<ParamField path="rateOf" type="object" required={false}>
The rate of the schedule. This can be a number of minutes, hours,
or days. For example, `{ rateOf: { minutes: 10 } }` will run
every 10 minutes.
</ParamField>
<ParamField path="cron" type="string" required={false}>
A cron expression to run the workflow on. For example, `0 0 * * *` will run
the workflow every hour at the top of the hour. See
[crontab.guru](https://crontab.guru/) for more information.
</ParamField>
## Event Payload
<ResponseField name="scheduledTime" type="Date" required={true}>
The time the event was scheduled to run.
</ResponseField>
<ResponseField name="lastRunAt" type="Date" required={false}>
The time the event last run. This will be `undefined` if the event has never run. Use this parameter to run window queries:
```ts
import { scheduleEvent, Trigger } from "@trigger.dev/sdk";
new Trigger({
id: "usage",
name: "usage",
on: scheduleEvent({ rateof: { minutes: 10 } }),
run: async (event, ctx) => {
const { lastRunAt, scheduledTime } = event;
const query = `SELECT * FROM users WHERE created_at < ${scheduledTime}`;
if (lastRunAt) {
query += ` AND created_at > ${lastRunAt}`;
}
const latestUsers = await db.query(query);
// ...
},
}).listen();
```
</ResponseField>