kidshift-be/src/index.ts

88 lines
3.1 KiB
TypeScript
Raw Normal View History

2024-06-15 07:19:16 +00:00
import express from "express";
import Logger from "@src/logger";
2024-06-17 17:20:58 +00:00
import debugRouter from "@src/routers/debugRouter";
import metaRouter from "@src/routers/metaRouter";
import parentRouter from "@src/routers/parent";
2024-06-17 17:23:22 +00:00
import childRouter from "@src/routers/child";
2024-06-16 07:42:08 +00:00
import os from "os";
import { getCommitHash, getCommitMessage } from "@utils/gitMeta";
import { Response, Request, Router } from 'express';
2024-06-17 03:47:29 +00:00
// Swagger
import swaggerUi from 'swagger-ui-express';
import swaggerJSDoc from 'swagger-jsdoc';
2024-06-15 07:19:16 +00:00
const app = express();
const port = 3000;
const logger = new Logger();
logger.setTag("index.ts");
2024-06-16 07:42:08 +00:00
// Greetings
console.log(`
2024-06-17 04:47:30 +00:00
::: ::: ::::::::::: ::::::::: :::::::: ::: ::: ::::::::::: :::::::::: :::::::::::
:+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
+#++:++ +#+ +#+ +:+ +#++:++#++ +#++:++#++ +#+ :#::+::# +#+
+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+#
### ### ########### ######### ######## ### ### ########### ### ###`);
2024-06-16 07:42:08 +00:00
console.log("\n");
2024-06-17 02:37:08 +00:00
console.log("==Environment======================================================================================");
2024-06-16 07:42:08 +00:00
console.log("Environmnet:");
console.log(" System:");
console.log(" OS: " + os.type() + " " + os.release());
console.log(" CPU: " + os.cpus()[0].model + " x" + os.cpus().length);
console.log(" Memory: " + os.totalmem() / 1024 / 1024 / 1024 + " GB");
console.log(" Platform: " + os.platform());
console.log(" Software:");
console.log(" Node.js: " + process.versions.node);
console.log(" V8: " + process.versions.v8);
console.log(" CommitHash: " + await getCommitHash());
console.log(" CommitMessage: " + await getCommitMessage());
2024-06-16 07:42:08 +00:00
console.log(" Configuration:");
console.log(" Port: " + port);
2024-06-17 02:37:08 +00:00
console.log("====================================================================================================");
2024-06-16 07:42:08 +00:00
console.log("\n");
logger.info("Starting server...");
2024-06-17 01:12:17 +00:00
app.get("/", (_req: Request, res: Response) => {
res.status(200).sendFile("index.html", { root: "static" });
2024-06-15 07:19:16 +00:00
});
2024-06-17 04:03:23 +00:00
logger.info("Index page mounted");
2024-06-15 07:19:16 +00:00
2024-06-17 03:47:29 +00:00
const options = {
swaggerDefinition: {
info: {
title: 'KidShift API',
version: '1.0.0'
},
},
apis: ['./src/routers/*.ts'],
};
const swaggerRouter = Router();
swaggerRouter.use('/', swaggerUi.serve);
swaggerRouter.get('/', swaggerUi.setup(swaggerJSDoc(options)));
2024-06-17 04:02:44 +00:00
app.use('/docs', swaggerRouter);
2024-06-17 04:03:23 +00:00
logger.info("Swagger enabled and mounted at /docs");
2024-06-17 03:47:29 +00:00
app.use(express.json());
2024-06-16 12:45:23 +00:00
logger.info("JSON parser enabled");
app.use('/parent', parentRouter);
2024-06-18 02:26:19 +00:00
logger.debug("Parent router mounted");
2024-06-17 17:23:22 +00:00
app.use('/child', childRouter);
2024-06-18 02:26:19 +00:00
logger.debug("Child router mounted");
app.use('/debug', debugRouter);
2024-06-17 17:20:58 +00:00
app.use('/meta', metaRouter);
2024-06-18 02:26:19 +00:00
logger.debug("Common routes mounted");
2024-06-16 12:45:23 +00:00
logger.info("Routers mounted");
2024-06-16 07:42:08 +00:00
2024-06-18 02:26:19 +00:00
2024-06-15 07:19:16 +00:00
app.listen(port, () => {
2024-06-18 02:30:40 +00:00
logger.success(`Server started! Listening on port ${port}`);
2024-06-15 07:19:16 +00:00
});