Blame view

utils/mongoDB.js 4.19 KB
49559b6c   sumatek   merge
1
var MongoClient = require('mongodb').MongoClient;
6fc87409   sumatek   update structure
2
3
4
5
6
7
8
9

const core = require('./core');
const log = core.log;
const stat = core.stats;
const constants = core.constants;
const config = core.config;


49559b6c   sumatek   merge
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

var connection = {};
connection.reqMongo = async function (req,method, query, collection) {
    
    // console.log(req.id)
    var mongoData = config.get('mongoDB');
    var url = "mongodb://"+mongoData.hopitalIp;
    var database = mongoData.hopitalName;
    var result = await mongoReq(req,url,database,method, query, collection);
    
    return result;
}


function mongoReq(req,url,database,method, query, collection){
0b6272e0   sumatek   update template
25
    
57d157f6   sumatek   add stats post
26
    
0b6272e0   sumatek   update template
27
28
    var nodeName = "MongoDB"; 
    var funStats = {
57d157f6   sumatek   add stats post
29
        detailSqlQuery : function(query){
2853a670   sumatek   update log
30
31
            log.detailSqlQuery(req,method,collection,query);
            stat.sendQuery(method,collection);
57d157f6   sumatek   add stats post
32
33
34
35
        },
        detailSqlResult : function(result, err){
            log.detailSqlResult(req,collection,result || err);
            if(result)
2853a670   sumatek   update log
36
                stat.receiveQuery(method,collection);
57d157f6   sumatek   add stats post
37
            else
2853a670   sumatek   update log
38
                stat.receiveBadQuery(method,collection);   
57d157f6   sumatek   add stats post
39
        },
0b6272e0   sumatek   update template
40
41
42
43
44
        addSuccessSummary : function(result){log.addSuccessSummary(req,nodeName,collection,result);},
        addErrorSummary : function(result){log.addErrorSummary(req,nodeName,collection,result);}
    };
    
   
49559b6c   sumatek   merge
45
46
47
48

    return new Promise((resolve, reject) => {
        MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
            if (err) {
0b6272e0   sumatek   update template
49
50
                console.log(err)                
                resolve(constants.RESPONSECONN.MESSAGE.DBERROR);
49559b6c   sumatek   merge
51
            }
0b6272e0   sumatek   update template
52
53
            funStats.detailSqlQuery(query);
            var dbInstant = db.db(database).collection(collection);
49559b6c   sumatek   merge
54
            switch (method) {
0b6272e0   sumatek   update template
55
56
                case constants.METHOD.GET:                
                    dbInstant.find(query, { projection: { _id: 0 } }).toArray(function(err, result) {                   
30fb6c36   sumatek   update fixbug post
57
                    resolve(checkResponse(method,result,err,funStats));                        
49559b6c   sumatek   merge
58
59
                    });
                    break;
0b6272e0   sumatek   update template
60
61
                case constants.METHOD.POST:
                    db.db(database).collection(collection).insertOne(query, function(err, result) {
30fb6c36   sumatek   update fixbug post
62
                    var response = checkResponse(method,result,err,funStats);
0b6272e0   sumatek   update template
63
64
                    delete response.resultData;  
                    resolve(response);
49559b6c   sumatek   merge
65
66
67
                    });
                    break;
                case "PUT":
0b6272e0   sumatek   update template
68
69
                    // db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
                    // db.close();
49559b6c   sumatek   merge
70
    
0b6272e0   sumatek   update template
71
72
73
74
75
76
                    // if (err) {
                    //     console.log(err)                    
                    //     resolve(checkResponse(req,{err:err}));
                    // }else
                    //     resolve(checkResponse(req,result));
                    // });
49559b6c   sumatek   merge
77
78
                    break;
                case "DELETE":
0b6272e0   sumatek   update template
79
80
                    // db.db(database).collection(collection).find(query, { projection: { _id: 0 } }).toArray(function(err, result) {
                    // db.close();
49559b6c   sumatek   merge
81
    
0b6272e0   sumatek   update template
82
83
84
85
86
87
                    // if (err) {
                    //     console.log(err)                    
                    //     resolve(checkResponse(req,{err:err}));
                    // }else
                    //     resolve(checkResponse(req,result));
                    // });
49559b6c   sumatek   merge
88
89
90
                    break;
                
            }
0b6272e0   sumatek   update template
91
            db.close();
49559b6c   sumatek   merge
92
93
94
95
96
        });
    });
    
}

30fb6c36   sumatek   update fixbug post
97
function checkResponse(method,result,err,funStats)
0b6272e0   sumatek   update template
98
99
100
101
{    
   
    funStats.detailSqlResult(result, err); 
    if(err)
49559b6c   sumatek   merge
102
    {
0b6272e0   sumatek   update template
103
104
105
106
107
        var returnData = constants.RESPONSECONN.MESSAGE.DBERROR;
        funStats.addErrorSummary(returnData);        
    }
    else
    {        
30fb6c36   sumatek   update fixbug post
108
109
110
111
112
113
114
        if(result.length == 0 && constants.METHOD.GET == method )
        {
            var returnData = constants.RESPONSERESULT.DATA_NOT_FOUND;
            funStats.addErrorSummary(returnData);    
            
        }else
        {
5a3cfae2   sumatek   update log
115
116
117
            var returnData = constants.RESPONSERESULT.SUCCESS;
            returnData.resultData = result;
            funStats.addSuccessSummary(returnData);
5a3cfae2   sumatek   update log
118
        }
49559b6c   sumatek   merge
119
120
121
122
123
124
125
    }

    return returnData
}


module.exports = connection;