Openstatus
www.openstatus.dev
1import type { NextRequest } from "next/server";
2
3import { and, gte, lte } from "@openstatus/db";
4import { db } from "@openstatus/db/src/db";
5import { user } from "@openstatus/db/src/schema";
6import { FollowUpEmail, sendEmail } from "@openstatus/emails";
7
8export async function GET(request: NextRequest) {
9 const authHeader = request.headers.get("authorization");
10 console.log(authHeader);
11 if (authHeader !== `Bearer ${process.env.CRON_SECRET}`) {
12 return new Response("Unauthorized", {
13 status: 401,
14 });
15 }
16
17 const date1 = new Date();
18 date1.setDate(date1.getDate() - 3);
19 const date2 = new Date();
20 date2.setDate(date2.getDate() - 2);
21 const users = await db
22 .select()
23 .from(user)
24 .where(and(gte(user.createdAt, date1), lte(user.createdAt, date2)))
25 .all();
26 for (const user of users) {
27 if (user.email) {
28 await sendEmail({
29 from: "Thibault from OpenStatus <thibault@openstatus.dev>",
30 subject: "How's it going with OpenStatus?",
31 to: [user.email],
32 react: FollowUpEmail(),
33 });
34 }
35 }
36 return Response.json({ success: true });
37}