lfapi

annotate 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
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 }

Impressum / About Us