69 lines
1.7 KiB
Plaintext
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>
|