-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
114 lines (105 loc) · 3.91 KB
/
server.js
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
102
103
104
105
106
107
108
109
110
111
112
113
114
'use strict'
const mongoose = require('mongoose')
const express = require('express')
const app = express()
const jwt = require('jsonwebtoken')
var http = require('http').Server(app)
var io = require('socket.io')(http)
require('dotenv').config()
// Database Configuration...
const uri = process.env.MONGOURI
const PORT = process.env.PORT || 3001
//Require routers
const taskRoute = require('./routes/task')
const skillsRoute = require('./routes/skills')
const consultancyRoute = require('./routes/consultancy')
const coworkingspaceRoute = require('./routes/coworkingspace')
const partnerRoute = require('./routes/partner')
const customerRoute = require('./routes/member')
const EducationalOrganisationRoute = require('./routes/EducationalOrganisation')
const certificationRoute = require('./routes/certification')
const scheduleRoute = require('./routes/schedule')
const reviewRoute = require('./routes/review')
const EvaluationRoute = require('./routes/Evaluation')
const applicationRoute = require('./routes/application')
const messageRoute = require('./routes/message')
const searchRoute = require('./routes/search')
const userRoute = require('./routes/user')
const loginRoute = require('./routes/login')
const requestRoute = require('./routes/requests')
const projectRoute = require('./routes/projects')
//Setup Parser, Note: extended option is diabled to allow for array encoding
app.use(express.json())
app.use(
express.urlencoded({
extended: false
})
)
//Setup Views Directory, TODO: Assign view engine, Let html as DEF
// app.set('views', './views')
// app.set('view engine', 'html')
//Logger
app.use((request, response, next) => {
console.log(
`${new Date().toString()} => ${request.method} ${request.originalUrl}`,
request.body
)
next()
})
const verifyToken = token => {
try {
let ver = jwt.verify(token, process.env.KEY)
return ver
} catch {
return false
}
}
//Setup Static Directory
// app.use(express.static('./public'))
//Setup routing directories/paths
app.set('io', io)
app.set('verifyToken', verifyToken)
app.use('/api/task', taskRoute.router) // Tested - Passed - changed file name to match file naming agreement
app.use('/api/consultancy', consultancyRoute) // Tested - Passed
app.use('/api/partner', partnerRoute) // Tested - Passed - router had extra paths, EX : /api/partner/update (solved by removal)
app.use('/api/coworking', coworkingspaceRoute) // Tested - Passed
app.use('/api/Member', customerRoute) // Tested - Passed
app.use('/api/EducationalOrganisation', EducationalOrganisationRoute) // Tested - Passed
app.use('/api/certification', certificationRoute) // Tested - Passed - A lot of problems with CRUD Associated with POST & GET routes (Solved by correcting code)
app.use('/api/schedule', scheduleRoute)
app.use('/api/review', reviewRoute)
app.use('/api/Evaluation', EvaluationRoute)
app.use('/api/application', applicationRoute)
app.use('/api/message', messageRoute)
app.use('/api/user', userRoute)
app.use('/api/login', loginRoute)
app.use('/api/skills', skillsRoute)
app.use('/api/search', searchRoute)
app.use('/api/request', requestRoute)
app.use('/api/project', projectRoute)
if (process.env.NODE_ENV === 'production') {
app.use(express.static('client/build'))
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
})
}
io.on('connection', () => {
console.log('Connected...')
})
// 404 & 500 Error handlers //Todo: handle errors in a different way
app.use((error, request, response, next) => {
response.status(500).send('500: Internal Server Error')
})
// Connect to mongo
mongoose
.connect(uri, {
useNewUrlParser: true,
autoIndex: false
})
.then(() => {
console.log('Connected to MongoDB')
http.listen(PORT, () => {
console.log('Application listening to port: ' + PORT)
})
})
.catch(err => console.log(err))