Commit 49559b6cd2e616bf1a870bd09d3cd5342735756f

Authored by sumatek
1 parent 58b47ee8
Exists in master and in 1 other branch dev

merge

.gitignore 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +# Logs
  2 +logs
  3 +*.log
  4 +*.detail
  5 +*.stat
  6 +*.summary
  7 +
  8 +# Runtime data
  9 +pids
  10 +*.pid
  11 +*.seed
  12 +
  13 +# Directory for instrumented libs generated by jscoverage/JSCover
  14 +lib-cov
  15 +
  16 +# Coverage directory used by tools like istanbul
  17 +coverage
  18 +
  19 +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
  20 +.grunt
  21 +
  22 +# node-waf configuration
  23 +.lock-wscript
  24 +
  25 +# Compiled binary addons (http://nodejs.org/api/addons.html)
  26 +build/Release
  27 +
  28 +# Dependency directory
  29 +# https://docs.npmjs.com/cli/shrinkwrap#caveats
  30 +node_modules
  31 +
  32 +# Debug log from npm
  33 +npm-debug.log
  34 +stat.db
... ...
app.config.json
1 1 {
2 2 "default": {
  3 + "appName": "Hostpital service",
3 4 "appPort": 3000,
4   - "apiUrlPrefix": "/api/partner",
  5 + "apiUrlPrefix": "/api",
5 6 "requestTimeout": 10,
6   - "redis" : {
7   - "host": "10.1.2.155",
8   - "port": "6379"
9   - },
10   - "passport": {
11   - "strategy": "local",
12   - "configStrategy": {
13   - "local": {
14   - "usernameField": "username",
15   - "passwordField": "password"
16   - },
17   - "saml": {
18   - "path": "/login/callback",
19   - "entryPoint": "https://10.252.160.223:9443/samlsso",
20   - "issuer": "smaf-partner"
21   - }
22   - },
23   - "routes": {
24   - "local": {
25   - "loginPageUrl": "http://localhost:4200/#/login",
26   - "logoutRedirectUrl": "http://localhost:4200"
27   - },
28   - "saml": {
29   - "loginPageUrl": "/login",
30   - "logoutRedirectUrl": "http://localhost:4200"
31   - }
32   - }
33   - },
34   - "sdfHost": "http://10.1.2.222:5000",
35   - "sdfAPI": {
36   - "saleArea": "/api/abc/def"
37   - }
  7 + "mongoDB" : {
  8 + "hopitalIp" : "10.1.2.155:27017",
  9 + "hopitalName" : "spw"
  10 + }
  11 +
  12 +
  13 +
38 14 },
39 15 "dev": {
40   - "redis" : {
41   - "host": "11.1.2.155",
42   - "port": "6379"
43   - },
44   - "sdfHost": "http://10.1.2.222:5000"
45   - },
46   - "staging": {
47   - "appPort": 4800,
48   - "redis" : {
49   - "host": "12.1.2.155",
50   - "port": "6379"
51   - },
52   - "sdfHost": "http://10.1.2.222:5000"
53   - },
54   - "production": {
55   - "appPort": 4800,
56   - "redis" : {
57   - "host": "12.1.2.155",
58   - "port": "6379"
59   - },
60   - "sdfHost": "http://10.1.2.222:5000"
  16 +
61 17 }
62 18 }
63 19  
... ...
app.js
1 1 require('app-module-path').addPath(__dirname);
2 2 const express = require('express');
3 3 const app = express();
4   -
5 4 const conf = require('utils/config');
  5 +const utils = require('utils/utils');
6 6  
7   -console.log(conf.get('redis.host'));
  7 +// console.log(conf.get('redis.host'));
8 8  
9 9 // setup generate request-id middleware
10 10 const addRequestId = require('express-request-id')();
... ... @@ -12,23 +12,23 @@ app.use(addRequestId);
12 12  
13 13 // setup express-session with redis store
14 14 const session = require('express-session');
15   -const RedisStore = require('connect-redis')(session);
  15 +// const RedisStore = require('connect-redis')(session);
16 16 const uuidV4 = require('uuid/v4');
17 17  
18   -app.use(session({
19   - genid: function(req) {
20   - return uuidV4(); // generates session id using UUID
21   - },
22   - store: new RedisStore({
23   - host: conf.get('redis.host'),
24   - port: conf.get('redis.port'),
25   - ttl: 180
26   - }),
27   - secret: 'dbc33e678f',
28   - saveUninitialized: true,
29   - resave: false,
30   - cookie: { maxAge: 3600000 }
31   -}));
  18 +// app.use(session({
  19 +// genid: function(req) {
  20 +// return uuidV4(); // generates session id using UUID
  21 +// },
  22 +// store: new RedisStore({
  23 +// host: conf.get('redis.host'),
  24 +// port: conf.get('redis.port'),
  25 +// ttl: 180
  26 +// }),
  27 +// secret: 'dbc33e678f',
  28 +// saveUninitialized: true,
  29 +// resave: false,
  30 +// cookie: { maxAge: 3600000 }
  31 +// }));
32 32  
33 33  
34 34 // setup json body parser
... ... @@ -67,11 +67,11 @@ log4js.configure('./config/log4js_config.json');
67 67  
68 68  
69 69 // setup passport
70   -const passport = require('utils/passport-func')();
71   -const flash = require('connect-flash');
72   -app.use(flash());
73   -app.use(passport.initialize());
74   -app.use(passport.session());
  70 +// const passport = require('utils/passport-func')();
  71 +// const flash = require('connect-flash');
  72 +// app.use(flash());
  73 +// app.use(passport.initialize());
  74 +// app.use(passport.session());
75 75  
76 76  
77 77  
... ... @@ -88,11 +88,14 @@ app.use(function (req, res, next) {
88 88 });
89 89  
90 90  
91   -const utils = require('utils/utils');
92 91 app.use( function( req, res, next ) {
  92 +
93 93 req = utils.findQueryString(req);
  94 +
  95 +
94 96 next();
95   -});
  97 + });
  98 +
96 99  
97 100  
98 101 // get BE api configs
... ... @@ -103,11 +106,14 @@ const appPort = conf.get('appPort');
103 106 let mongoQuery = require('./controllers/mongo-db/index');
104 107 app.use('/mongo', mongoQuery);
105 108  
106   -let apiSaleArea = require('./controllers/sale-area/index');
107   -app.use(apiUrlPrefix + '/sale-area', apiSaleArea);
  109 +let preference = require('./controllers/preference/index');
  110 +app.use(apiUrlPrefix+'/preference', preference);
  111 +
  112 +// let apiSaleArea = require('./controllers/sale-area/index');
  113 +// app.use(apiUrlPrefix + '/sale-area', apiSaleArea);
108 114  
109   -let apiLogin = require('./controllers/login/login')(passport);
110   -app.use('/', apiLogin);
  115 +// let apiLogin = require('./controllers/login/login')(passport);
  116 +// app.use('/', apiLogin);
111 117  
112 118  
113 119  
... ... @@ -136,5 +142,5 @@ app.all('*', function(req, res) {
136 142 // }));
137 143  
138 144 app.listen(appPort, function () {
139   - console.log('SMAF-Partner Backend app listening on port ' + appPort + '!');
  145 + console.log(conf.get('appName')+' listening on port ' + appPort + '!');
140 146 });
... ...
controllers/preference/index.js 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +let express = require('express');
  2 +let router = express.Router();
  3 +let connection = require("../../utils/mongoDB")
  4 +
  5 +
  6 +router.get('/:collection',async function (req, res) {
  7 + var query = Object.assign(req.params, req.query);
  8 + console.log(query);
  9 + var result = await connection.reqMongo(req,req.method,query,req.params.collection)
  10 + res.status(200).json(result);
  11 +
  12 +
  13 +});
  14 +
  15 +router.post('/:collection',async function (req, res) {
  16 + var query = Object.assign(req.params, req.query);
  17 + var result = await connection.reqMongo(req, query)
  18 + res.status(200).json(result);
  19 +});
  20 +
  21 +router.put('/:collection',async function (req, res) {
  22 + var query = Object.assign(req.params, req.query);
  23 + var result = await connection.reqMongo(req, query)
  24 + res.status(200).json(result);
  25 +});
  26 +
  27 +router.delete('/:collection',async function (req, res) {
  28 + var query = Object.assign(req.params, req.query);
  29 + var result = await connection.reqMongo(req, query)
  30 + res.status(200).json(result);
  31 +});
  32 +
  33 +module.exports = router;
0 34 \ No newline at end of file
... ...
package-lock.json
1 1 {
2   - "name": "express-project",
  2 + "name": "hospital",
3 3 "version": "1.0.0",
4 4 "lockfileVersion": 1,
5 5 "requires": true,
... ... @@ -471,6 +471,11 @@
471 471 "kuler": "1.0.1"
472 472 }
473 473 },
  474 + "diff": {
  475 + "version": "3.5.0",
  476 + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
  477 + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA=="
  478 + },
474 479 "double-ended-queue": {
475 480 "version": "2.1.0-0",
476 481 "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
... ... @@ -708,6 +713,11 @@
708 713 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
709 714 "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
710 715 },
  716 + "fs.realpath": {
  717 + "version": "1.0.0",
  718 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
  719 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
  720 + },
711 721 "generate-function": {
712 722 "version": "2.3.1",
713 723 "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
... ... @@ -740,11 +750,11 @@
740 750 }
741 751 },
742 752 "glob": {
743   - "version": "6.0.4",
744   - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
745   - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
746   - "optional": true,
  753 + "version": "7.1.2",
  754 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
  755 + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
747 756 "requires": {
  757 + "fs.realpath": "1.0.0",
748 758 "inflight": "1.0.6",
749 759 "inherits": "2.0.3",
750 760 "minimatch": "3.0.4",
... ... @@ -771,6 +781,11 @@
771 781 "ansi-regex": "2.1.1"
772 782 }
773 783 },
  784 + "has-flag": {
  785 + "version": "3.0.0",
  786 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
  787 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
  788 + },
774 789 "hawk": {
775 790 "version": "3.1.3",
776 791 "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
... ... @@ -790,6 +805,11 @@
790 805 "lodash": "4.17.11"
791 806 }
792 807 },
  808 + "he": {
  809 + "version": "1.1.1",
  810 + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
  811 + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0="
  812 + },
793 813 "hoek": {
794 814 "version": "2.16.3",
795 815 "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
... ... @@ -1137,6 +1157,47 @@
1137 1157 "minimist": "0.0.8"
1138 1158 }
1139 1159 },
  1160 + "mocha": {
  1161 + "version": "5.2.0",
  1162 + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
  1163 + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
  1164 + "requires": {
  1165 + "browser-stdout": "1.3.1",
  1166 + "commander": "2.15.1",
  1167 + "debug": "3.1.0",
  1168 + "diff": "3.5.0",
  1169 + "escape-string-regexp": "1.0.5",
  1170 + "glob": "7.1.2",
  1171 + "growl": "1.10.5",
  1172 + "he": "1.1.1",
  1173 + "minimatch": "3.0.4",
  1174 + "mkdirp": "0.5.1",
  1175 + "supports-color": "5.4.0"
  1176 + },
  1177 + "dependencies": {
  1178 + "commander": {
  1179 + "version": "2.15.1",
  1180 + "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
  1181 + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
  1182 + },
  1183 + "debug": {
  1184 + "version": "3.1.0",
  1185 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
  1186 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
  1187 + "requires": {
  1188 + "ms": "2.0.0"
  1189 + }
  1190 + },
  1191 + "supports-color": {
  1192 + "version": "5.4.0",
  1193 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
  1194 + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
  1195 + "requires": {
  1196 + "has-flag": "3.0.0"
  1197 + }
  1198 + }
  1199 + }
  1200 + },
1140 1201 "moment": {
1141 1202 "version": "2.22.2",
1142 1203 "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
... ...
package.json
1 1 {
2   - "name": "express-project",
  2 + "name": "hospital",
3 3 "version": "1.0.0",
4 4 "description": "",
5 5 "main": "app.js",
6 6 "scripts": {
7   - "test": "echo \"Error: no test specified\" && exit 1"
  7 + "test" : "mocha unitTest",
  8 + "start" : "npm run test && node app.js"
8 9 },
9   - "author": "",
  10 + "author": "Source Code",
10 11 "license": "ISC",
11 12 "dependencies": {
12 13 "app-module-path": "^2.2.0",
... ... @@ -20,6 +21,7 @@
20 21 "indicative": "^3.0.6",
21 22 "ldapjs": "^1.0.2",
22 23 "log4js": "^3.0.6",
  24 + "mocha": "^5.2.0",
23 25 "moment": "^2.22.2",
24 26 "mongodb": "^3.1.8",
25 27 "node-json-config": "0.0.4",
... ...
unitTest/test.js 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +describe('test app', function() {
  2 +
  3 +
  4 +
  5 + it('cal one down (calDown)' , function(done) {
  6 +
  7 +
  8 + if ('1'=='1') {
  9 + done();
  10 + } else {
  11 + done(new Error("fail"));
  12 + }
  13 +
  14 + });
  15 +
  16 +
  17 +
  18 + });
0 19 \ No newline at end of file
... ...
utils/mongoDB.js 0 → 100644
... ... @@ -0,0 +1,112 @@
  1 +const logger = require('./request-logger');
  2 +var MongoClient = require('mongodb').MongoClient;
  3 +var config = require('./config');
  4 +
  5 +var connection = {};
  6 +connection.reqMongo = async function (req,method, query, collection) {
  7 +
  8 + // console.log(req.id)
  9 + var mongoData = config.get('mongoDB');
  10 + var url = "mongodb://"+mongoData.hopitalIp;
  11 + var database = mongoData.hopitalName;
  12 + var result = await mongoReq(req,url,database,method, query, collection);
  13 +
  14 + return result;
  15 +}
  16 +
  17 +
  18 +function mongoReq(req,url,database,method, query, collection){
  19 +
  20 + logger.logSqlQuery({id : "session", reqId : req.id}, query);
  21 +
  22 + return new Promise((resolve, reject) => {
  23 + MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
  24 + if (err) {
  25 + console.log(err)
  26 + logger.logSqlResult({id : "session", reqId : req.id}, err.errmsg);
  27 + resolve({
  28 + resultCode : "50001",
  29 + message : err.errmsg
  30 + });
  31 + }
  32 +
  33 + switch (method) {
  34 + case "GET":
  35 + db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
  36 + db.close();
  37 +
  38 + if (err) {
  39 + console.log(err)
  40 + resolve(checkResponse(req,{err:err}));
  41 + }else
  42 + resolve(checkResponse(req,result));
  43 + });
  44 + break;
  45 + case "POST":
  46 + db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
  47 + db.close();
  48 +
  49 + if (err) {
  50 + console.log(err)
  51 + resolve(checkResponse(req,{err:err}));
  52 + }else
  53 + resolve(checkResponse(req,result));
  54 + });
  55 + break;
  56 + case "PUT":
  57 + db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
  58 + db.close();
  59 +
  60 + if (err) {
  61 + console.log(err)
  62 + resolve(checkResponse(req,{err:err}));
  63 + }else
  64 + resolve(checkResponse(req,result));
  65 + });
  66 + break;
  67 + case "DELETE":
  68 + db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
  69 + db.close();
  70 +
  71 + if (err) {
  72 + console.log(err)
  73 + resolve(checkResponse(req,{err:err}));
  74 + }else
  75 + resolve(checkResponse(req,result));
  76 + });
  77 + break;
  78 +
  79 + }
  80 +
  81 +
  82 + });
  83 + });
  84 +
  85 +}
  86 +
  87 +function checkResponse(req,response)
  88 +{
  89 +
  90 +
  91 + if(response.err)
  92 + {
  93 + logger.logSqlResult({id : "session", reqId : req.id}, err.errmsg);
  94 + var returnData = {
  95 + resultCode : "50001",
  96 + message : response.err.errmsg
  97 + };
  98 + }else
  99 + {
  100 + logger.logSqlResult({id : "session", reqId : req.id}, response);
  101 + var returnData = {
  102 + resultCode : "20000",
  103 + resultDescription : "Success",
  104 + resultData : response
  105 + };
  106 + }
  107 +
  108 + return returnData
  109 +}
  110 +
  111 +
  112 +module.exports = connection;
0 113 \ No newline at end of file
... ...