rev |
line source |
bsw@0
|
1 pg = require('pg');
|
bsw@0
|
2 exports.pg = pg;
|
bsw@0
|
3
|
bsw@0
|
4 selector = require('../lib/selector.js');
|
bsw@0
|
5 exports.selector = selector;
|
bsw@0
|
6
|
bsw@0
|
7
|
bsw@0
|
8 // ==========================================================================
|
bsw@0
|
9 // Database access helper function
|
bsw@0
|
10 // --------------------------------------------------------------------------
|
bsw@0
|
11
|
bsw@0
|
12
|
bsw@0
|
13 // executes a db query and call given callback function if suceeded
|
bsw@0
|
14 exports.query = function (conn, req, res, query_object, callback) {
|
bsw@0
|
15 if (!conn || !query_object) {
|
bsw@0
|
16 callback(null, conn);
|
bsw@0
|
17 return;
|
bsw@0
|
18 };
|
bsw@0
|
19 if (typeof(conn) == 'string') {
|
bsw@0
|
20 // connect to database
|
bsw@0
|
21 conn = pg.connect(conn, function(err, conn) {
|
bsw@0
|
22 // TODO error handling
|
bsw@0
|
23 if(err) {
|
bsw@0
|
24 console.log(err);
|
bsw@0
|
25 };
|
bsw@0
|
26 exports.query(conn, req, res, query_object, callback);
|
bsw@0
|
27 });
|
bsw@0
|
28 return;
|
bsw@0
|
29 };
|
bsw@0
|
30 if (query_object instanceof selector.Upserter) {
|
bsw@0
|
31 exports.query(conn, req, res, query_object.getSelector(), function(result, conn) {
|
bsw@0
|
32 if (result.rows.length > 1) {
|
bsw@0
|
33 exports.error_handler('json', conn, req, res, "error", null, "Multiple rows found for primary key.");
|
bsw@0
|
34 } else if (result.rows.length == 1) {
|
bsw@0
|
35 exports.query(conn, req, res, query_object.getSQLUpdate(), callback);
|
bsw@0
|
36 } else {
|
bsw@0
|
37 exports.query(conn, req, res, query_object.getSQLInsert(), callback);
|
bsw@0
|
38 }
|
bsw@0
|
39
|
bsw@0
|
40 });
|
bsw@0
|
41
|
bsw@0
|
42 } else {
|
bsw@0
|
43 var query;
|
bsw@0
|
44
|
bsw@0
|
45 if (typeof(query_object) == 'string') {
|
bsw@0
|
46 query = { cmd: query_object, args: {} };
|
bsw@0
|
47 } else {
|
bsw@0
|
48 query = query_object.assemble(function(i) { return ('$' + (i + 1)); });
|
bsw@0
|
49 }
|
bsw@0
|
50
|
bsw@40
|
51 console.log(' > SQL: ', query.cmd, query.args ? query.args : '');
|
bsw@0
|
52
|
bsw@0
|
53 conn.query(query.cmd, query.args, function(err, result) {
|
bsw@0
|
54 if (err) {
|
bsw@0
|
55 console.log(err);
|
bsw@0
|
56 exports.error_handler('json', conn, req, res, "error", null, err.message);
|
bsw@0
|
57 } else {
|
bsw@0
|
58 callback(result, conn);
|
bsw@0
|
59 }
|
bsw@0
|
60 });
|
bsw@0
|
61 }
|
bsw@0
|
62 }
|