Skip to content

Commit f411fa4

Browse files
authored
Added more schedule examples (#427)
* added more schedule examples * fixed lint issue * fixed formatting issues
1 parent 8d7dc55 commit f411fa4

File tree

10 files changed

+154
-2
lines changed

10 files changed

+154
-2
lines changed

schedules/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,9 @@ You can now run:
4040
npm run schedule.pause
4141
npm run schedule.unpause
4242
npm run schedule.delete
43+
npm run schedule.describe
44+
npm run schedule.backfill
45+
npm run schedule.list
46+
npm run schedule.trigger
47+
npm run schedule.update
4348
```

schedules/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@
1414
"schedule.go-faster": "ts-node src/go-faster.ts",
1515
"schedule.pause": "ts-node src/pause-schedule.ts",
1616
"schedule.unpause": "ts-node src/unpause-schedule.ts",
17-
"schedule.delete": "ts-node src/delete-schedule.ts"
17+
"schedule.delete": "ts-node src/delete-schedule.ts",
18+
"schedule.describe": "ts-node src/describe-schedule.ts",
19+
"schedule.backfill": "ts-node src/backfill-schedule.ts",
20+
"schedule.list": "ts-node src/list-schedule.ts",
21+
"schedule.trigger": "ts-node src/trigger-schedule.ts",
22+
"schedule.update": "ts-node src/update-schedule.ts"
1823
},
1924
"nodemonConfig": {
2025
"execMap": {

schedules/src/backfill-schedule.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Connection, Client, Backfill, ScheduleOverlapPolicy } from '@temporalio/client';
2+
3+
// @@@SNIPSTART typescript-backfill-a-scheduled-workflow
4+
function subtractMinutes(minutes: number): Date {
5+
const now = new Date();
6+
return new Date(now.getTime() - minutes * 60 * 1000);
7+
}
8+
9+
async function run() {
10+
const client = new Client({
11+
connection: await Connection.connect(),
12+
});
13+
14+
const backfillOptions: Backfill = {
15+
start: subtractMinutes(10),
16+
end: subtractMinutes(9),
17+
overlap: ScheduleOverlapPolicy.ALLOW_ALL,
18+
};
19+
20+
const handle = client.schedule.getHandle('sample-schedule');
21+
await handle.backfill(backfillOptions);
22+
23+
console.log(`Schedule is now backfilled.`);
24+
}
25+
// @@@SNIPEND
26+
27+
run().catch((err) => {
28+
console.error(err);
29+
process.exit(1);
30+
});

schedules/src/delete-schedule.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Connection, Client } from '@temporalio/client';
22

3+
// @@@SNIPSTART typescript-delete-a-scheduled-workflow
34
async function run() {
45
const client = new Client({
56
connection: await Connection.connect(),
@@ -10,6 +11,7 @@ async function run() {
1011

1112
console.log(`Schedule is now deleted.`);
1213
}
14+
// @@@SNIPEND
1315

1416
run().catch((err) => {
1517
console.error(err);

schedules/src/describe-schedule.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Connection, Client } from '@temporalio/client';
2+
3+
// @@@SNIPSTART typescript-describe-a-scheduled-workflow
4+
async function run() {
5+
const client = new Client({
6+
connection: await Connection.connect(),
7+
});
8+
9+
const handle = client.schedule.getHandle('sample-schedule');
10+
11+
const result = await handle.describe();
12+
13+
console.log(`Schedule description: ${JSON.stringify(result)}`);
14+
}
15+
// @@@SNIPEND
16+
17+
run().catch((err) => {
18+
console.error(err);
19+
process.exit(1);
20+
});

schedules/src/list-schedule.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Connection, Client } from '@temporalio/client';
2+
3+
// @@@SNIPSTART typescript-list-a-scheduled-workflow
4+
async function run() {
5+
const client = new Client({
6+
connection: await Connection.connect(),
7+
});
8+
9+
const schedules = [];
10+
11+
const scheduleList = client.schedule.list();
12+
13+
for await (const schedule of scheduleList) {
14+
schedules.push(schedule);
15+
}
16+
17+
console.log(`Schedules are now listed: ${JSON.stringify(schedules)}`);
18+
}
19+
// @@ SNIPEND
20+
21+
run().catch((err) => {
22+
console.error(err);
23+
process.exit(1);
24+
});

schedules/src/pause-schedule.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Connection, Client } from '@temporalio/client';
22

3+
// @@@SNIPSTART typescript-pause-a-scheduled-workflow
34
async function run() {
45
const client = new Client({
56
connection: await Connection.connect(),
@@ -10,6 +11,7 @@ async function run() {
1011

1112
console.log(`Schedule is now paused.`);
1213
}
14+
// @@@SNIPEND
1315

1416
run()
1517
.then(() => process.exit(0))

schedules/src/start-schedule.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Connection, Client, ScheduleOverlapPolicy } from '@temporalio/client';
22
import { reminder } from './workflows';
33

4+
// @@@SNIPSTART typescript-create-a-scheduled-workflow
45
async function run() {
56
const client = new Client({
67
connection: await Connection.connect(),
@@ -42,6 +43,7 @@ async function run() {
4243
// ],
4344
},
4445
});
46+
// @@@SNIPEND
4547

4648
console.log(`Started schedule '${schedule.scheduleId}'.
4749
@@ -53,7 +55,12 @@ You can now run:
5355
npm run schedule.pause
5456
npm run schedule.unpause
5557
npm run schedule.delete
56-
`);
58+
npm run schedule.describe
59+
npm run schedule.backfill
60+
npm run schedule.list
61+
npm run schedule.trigger
62+
npm run schedule.update
63+
`);
5764

5865
await client.connection.close();
5966
}

schedules/src/trigger-schedule.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Connection, Client } from '@temporalio/client';
2+
3+
// @@@SNIPSTART typescript-trigger-a-scheduled-workflow
4+
async function run() {
5+
const client = new Client({
6+
connection: await Connection.connect(),
7+
});
8+
9+
const handle = client.schedule.getHandle('sample-schedule');
10+
11+
await handle.trigger();
12+
13+
console.log(`Schedule is now triggered.`);
14+
}
15+
// @@@SNIPEND
16+
17+
run().catch((err) => {
18+
console.error(err);
19+
process.exit(1);
20+
});

schedules/src/update-schedule.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import {
2+
Connection,
3+
Client,
4+
ScheduleDescription,
5+
ScheduleOptionsStartWorkflowAction,
6+
ScheduleUpdateOptions,
7+
Workflow,
8+
} from '@temporalio/client';
9+
10+
// @@@SNIPSTART typescript-update-a-scheduled-workflow
11+
const updateSchedule = (
12+
input: ScheduleDescription,
13+
): ScheduleUpdateOptions<ScheduleOptionsStartWorkflowAction<Workflow>> => {
14+
const scheduleAction = input.action;
15+
16+
scheduleAction.args = ['my updated schedule arg'];
17+
18+
return { ...input, ...scheduleAction };
19+
};
20+
21+
async function run() {
22+
const client = new Client({
23+
connection: await Connection.connect(),
24+
});
25+
26+
const handle = client.schedule.getHandle('sample-schedule');
27+
28+
await handle.update(updateSchedule);
29+
30+
console.log(`Schedule is now updated.`);
31+
}
32+
// @@@SNIPEND
33+
34+
run().catch((err) => {
35+
console.error(err);
36+
process.exit(1);
37+
});

0 commit comments

Comments
 (0)