-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
83 lines (61 loc) · 1.91 KB
/
app.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
//import express module
const express = require('express')
const helmet = require('helmet')
const compression = require('compression')
const morgan = require('morgan')
require('dotenv').config()
//limit repeated requests to public APIs
const rateLimit = require('express-rate-limit');
// Utils - connecting to database
const { db } = require('./utils/database');
// Controllers
const { globalErrorHandler } = require('./controllers/error.controllers');
//import routers
const {usersRouter} = require('./routes/users.routes')
const {repairsRouter} = require('./routes/repairs.routes')
//import Models
const { User } = require('./models/user.model')
const { Repair } = require('./models/repair.model')
//init express app
const app = express()
// Enable incoming JSON data
app.use(express.json());
//add security helment
app.use(helmet())
//compress responses
app.use(compression())
//log incoming request
if(process.env.NODE_ENV === 'development') app.use(morgan('dev'))
else app.use(morgan('combined'))
// Limit IP requests
const limiter = rateLimit({
max: 10000,
windowMs: 1 * 60 * 60 * 1000, // 1 hr
message: 'Too many requests from this IP',
});
app.use(limiter);
//ENDPOINTS
//http://localhost:9000/api/v1/users - users endpoint
app.use('/api/v1/users', usersRouter)
//http://localhost:9000/api/v1/repairs - repairs endpoint
app.use('/api/v1/repairs', repairsRouter)
//GLOBAL ERROR HANDLER
app.use('*', globalErrorHandler)
//autenticando base de datos
db.authenticate()
.then(()=> console.log('exitosa la conexion'))
.catch((err) => console.log(err))
// 1 User <----> M repairs
User.hasMany(Repair);
Repair.belongsTo(User);
//sincronizar modelos
db.sync()
.then(() => console.log('Database synced'))
.catch(err => console.log(err));
// Spin up server
//define the port
const PORT = process.env.PORT || 9000
//start server and listen request
app.listen(PORT, () => {
console.log(`server running on PORT ${PORT}`)
})