forked from GA-Oct-hackathon-team-3/backend
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
76 lines (61 loc) · 2.46 KB
/
index.ts
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
require('dotenv').config();
import path from 'path';
import express from 'express';
import morgan from 'morgan';
import cors from 'cors';
import fileUpload from 'express-fileupload';
import sanitize from 'express-mongo-sanitize';
import cookieParser from 'cookie-parser';
import bearer from './middleware/bearer';
import usersRoute from './modules/user/routes/usersRoute';
import friendsRoute from './modules/friends/friendsRoute';
import userProfileRoute from './modules/profile/userProfileRoute';
import tagsRoute from './modules/tags/tagsRoute';
import deviceInfoRoute from './modules/notifications/deviceInfoRoute';
import remindersRoute from './modules/notifications/remindersRoute';
import connectDB from './utilities/db';
import { getApproachingBirthdays, sendExpoNotifications, startAgenda } from './modules/notifications/notificationService';
import { startCleanupAgenda } from './utilities/databaseCleanup';
const DEBUG = process.env.NODE_ENV ? process.env.NODE_ENV.toLocaleLowerCase() !== 'production' : true; // Fix DEBUG logic
const PORT = process.env.PORT || 3010;
export const configureApp = (middleware?: any[]) => {
const app = express();
app.use(cors({
origin: 'http://localhost:3000',
credentials: true,
}));
app.use(morgan(DEBUG ? 'dev' : 'short'));
app.use(express.json());
app.use(express.static(path.join(__dirname, 'build')));
app.use(sanitize());
app.use(fileUpload());
app.use(cookieParser());
if (middleware) {
app.use(middleware);
}
app.use("/api/users", usersRoute);
app.use('/api/friends', friendsRoute);
app.use('/api/users/profile', userProfileRoute);
app.use('/api/tags', tagsRoute);
app.use('/api/device', deviceInfoRoute);
app.use('/api/reminders', remindersRoute);
// app.get('/test', async (req,res)=>{
// const list = await getApproachingBirthdays();
// await sendExpoNotifications(list);
// res.json(list);
// // res.json(await getApproachingBirthdays())
// })
return app;
}
const app = configureApp([bearer]);
(async () => {
await startAgenda(); // send birthday reminders
await startCleanupAgenda(); // database cleanup (tag, notification, reminder, and verification token collections)
})();
if (!process.env.NODE_ENV || (process.env.NODE_ENV && process.env.NODE_ENV !== 'test')) {
connectDB();
app.listen(PORT, () => {
console.log(`Express app running on port ${PORT}`);
});
}
export default app;