Openstatus www.openstatus.dev
at main 37 lines 1.1 kB view raw
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}