node package manager

db-stuff

db-stuff

Database abstraction

Attempt to provide a unified low level interface to various databases. Currently supports:

  1. MySql
  2. PostgreSql

one need to npm install pg / mysql in order to use those implementations

 $ npm install db-stuff pg
var dbStuff = require('db-stuff');
 
var config = {
implementation: 'PostgresDatastore',
connectionString: 'tcp://user:pass@redshift.host:5439/db'
};
 
dbStuff.create(config, function (errdatastore) {
 
datastore.query('select * table', function(errdata) {
console.log(err, data);
});
// with params 
datastore.query('select * table where x=$1', [1], function(errdata) {
console.log(err, data);
});
 
datastore.insert('table', { a: 1, b: 2}, function (err) {
})
 
datastore.update('table', { a: 1, b: 3}, function (err) {
})
 
datastore.update('table', { a: 1, b: 3}, {id: 1, b:2 } function (err) {
// update record where id = 1 AND b = 2 
// this simple filter only supports AND(s) 
// for more complex stuff just run query()  
})
 
// with params 
datastore.createQuery('select * from table where x=$1', [1], function(errq) {
q.on('row', function(row) {
 
});
 
q.on('error', function(err) {
 
});
 
q.on('end', function(results) {
 
});
});
 
datastore.createQuery('select * from table', function(errq) {
...
...
...
});
 
 
//reusable/batch insert command 
function cb(err) {
console.log(err);
}
 
var insertCommand = datastore.newInsertCommand('table', ['fieldA', 'fieldB']);
 
insertCommand.execute([1,2], cb);
// raw strings - will be places directly inside VALUES (...), this is very unsafe though 
insertCommand.execute('1,2', cb);
 
var bulkInsertCommand = datastore.newBulkInsertCommand('table', ['fieldA', 'fieldB'])
bulkInsertCommand.execute([
[1,2],
[3,4],
[5,6]
], cb)
});