-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
102 lines (86 loc) · 2.86 KB
/
Copy pathindex.js
File metadata and controls
102 lines (86 loc) · 2.86 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import 'dotenv/config';
import cors from 'cors';
import morgan from 'morgan';
import express from 'express';
import cookieParser from 'cookie-parser';
import { logger } from './lib/logger.js';
import { dbCheck } from './lib/dbCheck.js';
import { rateLimiter } from './middlewares/rateLimiter.js';
import { validateOrgId } from './middlewares/validation.js';
import {
errorHandler,
notFoundHandler
} from './middlewares/errorHandler.js';
import { welcome } from './services/welcome.js';
import adminRoutes from './routes/admin.js';
import userRoutes from './routes/user.js';
import organizationRoutes from './routes/organization.js';
import authenticationRoutes from './routes/authentication.js';
import invoiceRoutes from './routes/invoice.js';
import purchaseItemRoutes from './routes/purchaseItem.js';
import purchaseItemCategoryRoutes from './routes/purchaseItemCategory.js';
import saleRoutes from './routes/sale.js';
import customerRoutes from './routes/customer.js';
import supplierRoutes from './routes/supplier.js';
import productionOrderRoutes from './routes/productionOrder.js';
import productRoutes from './routes/product.js';
import productCategoryRoutes from './routes/productCategory.js';
const app = express();
const morganLogFormat =
process.env.APP_ENV === 'development' ? 'dev' : 'combined';
const morganOptions = {
stream: {
write: (message) => logger.info(message.trim())
}
}
const corsHeaders = {
origin: process.env.CLIENT_URL,
credentials: true,
}
// Middlewares
app.use(express.json({ limit: '50mb' }));
app.use(morgan(morganLogFormat));
app.use(cookieParser());
app.use(cors(corsHeaders));
if (process.env.FILE_LOGGING === 'on') {
app.use(morgan('combined', morganOptions));
}
if (process.env.RATE_LIMITING === 'on') {
app.use(rateLimiter);
}
// Routes
const appRouter = express.Router();
const orgRouter = express.Router();
app.get('/', welcome);
app.use('/api/v2', appRouter);
appRouter.get('/', welcome);
appRouter.use('/admin', adminRoutes);
appRouter.use('/auth', authenticationRoutes);
appRouter.use('/organizations', organizationRoutes);
appRouter.use('/users', userRoutes);
appRouter.use(
'/organizations/:organizationId',
validateOrgId,
orgRouter
);
orgRouter.use('/invoices', invoiceRoutes);
orgRouter.use('/purchase-items', purchaseItemRoutes);
orgRouter.use(
'/purchase-item-categories',
purchaseItemCategoryRoutes
);
orgRouter.use('/sales', saleRoutes);
orgRouter.use('/suppliers', supplierRoutes);
orgRouter.use('/customers', customerRoutes);
orgRouter.use('/production-orders', productionOrderRoutes);
orgRouter.use('/products', productRoutes);
orgRouter.use('/product-categories', productCategoryRoutes);
// Not Found Handler
app.use(notFoundHandler);
// Global Error Handler
app.use(errorHandler);
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is up and running on port ${PORT}.`);
dbCheck();
});