1
import { TriggerClient, cronTrigger } from "@trigger.dev/sdk";
2
import { SendGrid } from "@trigger.dev/sendgrid";
3
import { Slack } from "@trigger.dev/slack";
4
import { weeklySummaryDb } from "./mocks/db";
5
import { weeklySummaryEmail } from "./mocks/emails";
6
const sendgrid = new SendGrid({
8
apiKey: process.env.SENDGRID_API_KEY!,
11
const slack = new Slack({ id: "slack" });
16
id: "weekly-user-activity-summary",
17
name: "Weekly user activity summary",
19
integrations: { sendgrid, slack },
20
trigger: cronTrigger({
24
run: async (payload, io, ctx) => {
25
const users = await weeklySummaryDb.getUsers();
30
for (const user of users) {
31
if (user.summariesEnabled) {
32
await io.sendgrid.sendEmail(`Weekly summary for ${user.id}`, {
36
subject: "Your weekly summary",
37
html: weeklySummaryEmail(user),
45
await io.slack.postMessage("Notify team", {
46
text: `Weekly summary sent to ${sentCount} users and not sent to ${notSentCount} users`,
48
channel: "YOUR_CHANNEL_ID",