0.1.51 • Published 10 years ago

crate-connect v0.1.51

Weekly downloads
19
License
-
Repository
github
Last release
10 years ago

crate-connect

Build Status

A simple node.js driver to connect to a Crate.io Data Storage, this was originally part of the CrateJS driver, now CrateJS is an extension of crate-connect.

Installation

npm install crate-connect

Sample usage

var Crate = require('crate-connect');

// You can have as many db instance as you please :)
// You should probably add this part to another module and export it!
var db = new Crate({
  host: 'localhost', //Defaults to localhost
  port: 4200, //Defaults to 4200
  // You can also send in a cluster of nodes
  cluster: [
      {
        host: 'localhost',
        port:4200
      },
  ]
});

// Now lets build some queries, using placeholders, you can either use ? or $1, $2, $3...
var q = {
  getSomeTweets: db.Query('SELECT text FROM tweets LIMIT ?'),
  getReTweeted:  db.Query('SELECT text FROM tweets WHERE retweeted = $1 LIMIT $2'),
};

// Get some tweets
q.getSomeTweets.execute([10], onResponse);

// Get only tweets with retweets
q.getReTweeted.execute([true, 10], onResponse);

function onResponse(err, res) {
    if(err) {
      //Do something
      return;
    }

    console.log('Returned %d rows', res.rowcount);
    console.log('Columns returned:\n', res.cols);
    console.log(res.rows);
}

Methods

###db.Query(string)

  • This constructs a query and returns an .execute() method.

###db.execute(query, statements, callback)

  • This executes a query directly
  • Statements is an optional parameter, you can replace it with the callback
db.execute('SELECT * FROM tweets LIMIT ?', [1], function(err, res) {})

###db.blob()

  • Methods related to managing blob's
  • Note that this does not construct the sha1 hash from the buffer, you need to do it yourself.
  • Note that if the sha1 hash is not correct, the blob wont be inserted. The sha1 hash must be calculated from the blob to be inserted.

####blob().put(table, sha1Hash, buffer, callback)

var buffer = new Buffer('sample')
var hash = crypto.createHash('sha1').update(buffer).digest('hex')

####blob().put('imagesTable', hash, buffer, function(err) {
    if(err) {
        //err.statusCode
    }
})

####blob().get(table, sha1Hash, callback)

db.blob().get('imagesTable', '8151325dcdbae9e0ff95f9f9658432dbedfdb209', function(err, buffer) {
    if(err) {
        //err.statusCode
    }
})

####blob().check(table, sha1Hash, callback)

db.blob().check('imagesTable', '8151325dcdbae9e0ff95f9f9658432dbedfdb209', function(err) {
    if(err) {
        //err.statusCode
    }
})

####blob().delete(table, sha1Hash, callback)

db.blob().check('imagesTable', '8151325dcdbae9e0ff95f9f9658432dbedfdb209', function(err) {
    if(err) {
        //err.statusCode
    }
})

TODO

  • Refactor some pieces of this code, its messy :(

Contributors