-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
79 lines (70 loc) · 2.64 KB
/
index.js
File metadata and controls
79 lines (70 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
require("dotenv").config();
require("express-async-errors");
const express = require("express");
const app = express();
const connectDB = require("./connect");
const morgan = require("morgan");
const cors = require("cors");
const { MONGO_IP, MONGO_PORT } = require("./config/config");
// security
const mongoSanitize = require("express-mongo-sanitize");
const rateLimit = require("express-rate-limit");
const helmet = require("helmet");
const xss = require("xss-clean");
// routes
const inventoryRoute = require("./Routes/inventoryRoute");
const vendorRoute = require("./Routes/VendorRoute");
const purchaseRoute = require("./Routes/PurchaseRoute");
const customerRoute = require("./Routes/customerRoute");
const salesRoute = require("./Routes/salesRoute");
const authRouter = require("./Routes/userAuthRoute");
// error handling
const NotFoundMiddleware = require("./Middleware/notFound");
const errorHandler = require("./Middleware/error-handlerMiddleware");
// Swagger
// const swaggerUi = require("swagger-ui-express");
// const YAML = require("yamljs");
// const swaggerDocument = YAML.load("./swagger.yaml");
// middleware
app.set("trust proxy", 1);
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes)
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
legacyHeaders: false, // Disable the `X-RateLimit-*` headers
});
// app.use(morgan("tiny")); //set up a condition to log this only when ur in development
app.use(express.json());
app.use(cors());
app.use(mongoSanitize());
app.use(limiter);
app.use(helmet());
app.use(xss());
//this confirms that our API is up
// app.get("/", (req, res) => {
// res.send("<h1>Api Docs</h1>");
// });
// app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDocument));
// routes
app.use("/api/v1/inventory", inventoryRoute);
app.use("/api/v1/vendor", vendorRoute);
app.use("/api/v1/purchase", purchaseRoute);
app.use("/api/v1/customer", customerRoute);
app.use("/api/v1/sales", salesRoute);
app.use("/api/v1/user", authRouter);
app.use(express.static("public"));
app.use(NotFoundMiddleware);
app.use(errorHandler);
const port = process.env.PORT || 3000;
// const url = process.env.MONGO_DB;
// const url = `mongodb://${MONGO_IP}:${MONGO_PORT}`;
const connectDbUrl = `mongodb+srv://${process.env.MONGO_USER}:${process.env.MONGO_PASS}@cluster0.4osfo2k.mongodb.net/?retryWrites=true&w=majority`;
const connectApp = async () => {
const DbConnectted = connectDB(connectDbUrl);
if (DbConnectted) {
app.listen(port, () => {
console.log(`app listening on port ${port}...`);
});
}
};
connectApp();