34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import type { NextApiRequest, NextApiResponse } from "next";
|
|
import { getSession } from "next-auth/react";
|
|
|
|
import { performance } from "@calcom/lib/server/perfObserver";
|
|
|
|
let isCold = true;
|
|
|
|
export default async function handler(req: NextApiRequest, res: NextApiResponse): Promise<void> {
|
|
const prePrismaDate = performance.now();
|
|
const prisma = (await import("@calcom/prisma")).default;
|
|
const preSessionDate = performance.now();
|
|
const session = await getSession({ req });
|
|
if (!session) return res.status(409).json({ message: "Unauthorized" });
|
|
const preUserDate = performance.now();
|
|
const user = await prisma.user.findUnique({ where: { id: session.user.id } });
|
|
if (!user) return res.status(404).json({ message: "No user found" });
|
|
const lastUpdate = performance.now();
|
|
|
|
res.setHeader("x-is-cold", isCold.toString());
|
|
isCold = false;
|
|
|
|
return res.status(200).json({
|
|
message: `Hello ${user.name}`,
|
|
prePrismaDate,
|
|
prismaDuration: `Prisma took ${preSessionDate - prePrismaDate}ms`,
|
|
preSessionDate,
|
|
sessionDuration: `Session took ${preUserDate - preSessionDate}ms`,
|
|
preUserDate,
|
|
userDuration: `User took ${lastUpdate - preUserDate}ms`,
|
|
lastUpdate,
|
|
wasCold: isCold,
|
|
});
|
|
}
|