/** * @copyright nhcarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import cors from "@fastify/cors"; import { PrismaClient } from "@prisma/client"; import fastify from "fastify"; import { authHook } from "./hooks/auth.js"; import { corsHook } from "./hooks/cors.js"; import { baseRoutes } from "./routes/base.js"; import { listRoutes } from "./routes/list.js"; import { reviewRoutes } from "./routes/review.js"; import { submitRoutes } from "./routes/submit.js"; import { logger } from "./utils/logger.js"; /** * Starts up a web server for health monitoring. */ try { const database = new PrismaClient(); await database.$connect(); await logger.log("debug", "Connected to the database."); const server = fastify({ logger: false, }); server.register(cors, { origin: "*", }); server.addHook("preHandler", authHook); server.addHook("preHandler", corsHook); server.register(baseRoutes(database)); server.register(listRoutes(database)); server.register(reviewRoutes(database)); server.register(submitRoutes(database)); server.listen({ port: 1234 }, (error) => { if (error) { void logger.error("instantiate server", error); return; } void logger.log("debug", "Server listening on port 1234."); }); } catch (error) { if (error instanceof Error) { void logger.error("instantiate server", error); } else { void logger.error("instantiate server", new Error("Unknown error")); } }