lfapi

view lfapi/db.js @ 40:6d4de6b0d0f6

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

Impressum / About Us