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";
7
const sendgrid = new SendGrid({
9
apiKey: process.env.SENDGRID_API_KEY!,
12
const slack = new Slack({ id: "slack" });
17
id: "weekly-user-activity-summary",
18
name: "Weekly user activity summary",
20
integrations: { sendgrid, slack },
21
trigger: cronTrigger({
25
run: async (payload, io, ctx) => {
26
const users = await weeklySummaryDb.getUsers();
31
for (const user of users) {
32
if (user.summariesEnabled) {
33
await io.sendgrid.sendEmail(`Weekly summary for ${user.id}`, {
37
subject: "Your weekly summary",
38
html: weeklySummaryEmail(user),
46
await io.slack.postMessage("Notify team", {
47
text: `Weekly summary sent to ${sentCount} users and not sent to ${notSentCount} users`,
49
channel: "YOUR_CHANNEL_ID",