-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
86 lines (73 loc) · 3.7 KB
/
index.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
require('dotenv').config();
const configs = require('./configs/configs');
const mysql = require('mysql2');
const express = require('express');
const bodyParser = require('body-parser');
const PengunjungService = require('./services/pengunjung_service');
const PengunjungHandler = require('./handlers/pengunjung_handler');
const KunjunganService = require('./services/kunjungan_service');
const KunjunganHandler = require('./handlers/kunjungan_handler');
const MitraService = require('./services/mitra_service');
const MitraHandler = require('./handlers/mitra_handler');
const responses = require('./responses/responses');
// instantiate configs
const appConfig = configs.get('app');
const mysqlConfig = configs.get('mysql');
/**
* main() will run the application.
*/
async function main() {
const mysqlPool = mysql.createPool({
...mysqlConfig,
timezone: '+07:00'
})
const promiseMysqlPool = mysqlPool.promise();
const pengunjungService = new PengunjungService(promiseMysqlPool);
const pengunjungHandler = new PengunjungHandler(pengunjungService);
const kunjunganService = new KunjunganService(promiseMysqlPool);
const kunjunganHandler = new KunjunganHandler(kunjunganService);
const mitraService = new MitraService(promiseMysqlPool);
const mitraHandler = new MitraHandler(mitraService);
const router = express();
router.use(bodyParser.urlencoded({ extended: false }));
router.use(bodyParser.json());
router.get('/v1/pengunjung', pengunjungHandler.getManyPengunjung.bind(pengunjungHandler));
router.get('/v1/pengunjung/:id', pengunjungHandler.getOnePengunjung.bind(pengunjungHandler));
router.get('/v1/pengunjung/login/:username', pengunjungHandler.getOnePengunjungByUsername.bind(pengunjungHandler));
router.post('/v1/pengunjung', pengunjungHandler.createPengunjung.bind(pengunjungHandler));
router.put('/v1/pengunjung/:id', pengunjungHandler.updatePengunjung.bind(pengunjungHandler));
router.put('/v1/pengunjung/editnama/:username', pengunjungHandler.updatePengunjungNama.bind(pengunjungHandler));
router.put('/v1/pengunjung/edittelp/:username', pengunjungHandler.updatePengunjungTelp.bind(pengunjungHandler));
router.put('/v1/pengunjung/editalamat/:username', pengunjungHandler.updatePengunjungAlamat.bind(pengunjungHandler));
router.put('/v1/pengunjung/editpassword/:username', pengunjungHandler.updatePassword.bind(pengunjungHandler));
router.get('/v1/mitra', mitraHandler.getManyMitra.bind(mitraHandler));
router.get('/v1/mitra/:id', mitraHandler.getOneMitra.bind(mitraHandler));
router.get('/v1/mitra/cari/:nama', mitraHandler.getMitraByNama.bind(mitraHandler));
router.get('/v1/kunjungan/:id', kunjunganHandler.getKunjunganByIDPengunjung.bind(kunjunganHandler));
router.get('/v1/kunjungan/:id/:keyword', kunjunganHandler.getKunjunganByKeyword.bind(kunjunganHandler));
router.post('/v1/kunjungan', kunjunganHandler.createKunjungan.bind(kunjunganHandler));
router.get('/', function(_, res) {
responses.success(res, 200, 'OK', 'application is running properly', null, null);
});
const server = router.listen(appConfig.port, function() {
console.info('application is running on port', appConfig.port);
});
process.on('SIGINT', function() {
server.close(function(err) {
if (err) {
console.error(err.message);
}
console.info('server is gracefully shutdown')
});
mysqlPool.end(function(err) {
if (err) {
console.error(err.message);
}
console.info('mysql is gracefully shutdown')
})
setTimeout(function() {
process.exit(0);
}, 5 * 1000)
})
}
main();