generated from nhcarrigan/template
55 lines
1.4 KiB
TypeScript
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"));
|
|
}
|
|
}
|