This repository has been archived on 2025-06-12. You can view files and clone it, but cannot push or open issues or pull requests.
forms/server/src/index.ts

55 lines
1.4 KiB
TypeScript

/**
* @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"));
}
}