1.8.11 • Published 8 years ago

lussandra-odm v1.8.11

Weekly downloads
62
License
MIT
Repository
github
Last release
8 years ago

#Object Document Modeling for Cassandra ###Lucene + Cassandra = Lussandra; This also works with Cassandra ;)


Take note this module is in Beta. Use at your own risk

This module was made to work with : https://github.com/nebulr/lussandra

Install with npm install --save lussandra-odm

Instantiate the cassandra client by calling :

require ('lussandra-odm').init(config).then(function () { ... });

Where your config follows the following format :

var config = {
    contactPoints : [ '192.168.99.100:9042' ],
    keyspace : 'somekeyspace',
    username : 'someusername',
    password : 'somepassword',
    replication : {
        strategy: 'SimpleStrategy', //Default is 'SimpleStrategy', NOTE: Use 'NetworkTopologyStrategy' for production
        replication_factor: 1, //Default is 1 (only used with SimpleStrategy). Not used for 'NetworkTopologyStrategy'
        strategy_options: { //Strategy options is only used for NetworkTopologyStrategy, not for SimpleStrategy
            '0': 3
            // '10':3,
            // '20':3
        }
    }
};


require ('lussandra-odm').init (config).then(function () {
  // Syncing the models with cassandra will fail if NOT done in this block
  require ('./routes')(api);
});

//or

require ('lussandra-odm').init (config).then(function () {
  // Syncing the models with cassandra will fail if NOT done in this block
  var User = require ('user.model'); // Like shown below
});

An example of the usage :

// Filename - user.model.js
var cassandra   = require ('lussandra-odm').client;
var uuid        = require ('node-uuid');

var UserModel = cassandra.model ({
  email : {
    type : cassandra.types.TEXT,
    key_type : cassandra.types.PRIMARY_KEY,
    key_order : 1
  },
  id : {
    type : cassandra.types.UUID,
    key_type : cassandra.types.INDEX,
    key_order : 2
  },
  active : { type : cassandra.types.BOOLEAN, default : true },
  password : { type : cassandra.types.TEXT },
  account : { type : cassandra.types.TEXT },
  created : { type : cassandra.types.TIMESTAMP },
  latitude : { type : cassandra.types.FLOAT },
  longitude : { type : cassandra.types.FLOAT },
  accessed : { type : cassandra.types.TIMESTAMP },
  settings :  { type : cassandra.types.JSONTOTEXT },
  role : { type : cassandra.types.TEXT },
  subrole : { type : cassandra.types.TEXT },
  setup : { type : cassandra.types.BOOLEAN }
}, {
  tableName: 'user',
  pre: function(obj) {
    if(obj.isNew) {
      obj.id = uuid.v4(); // Not required. Will create a default id uuid if undefined or not added
      obj.created = new Date();
    }
    obj.accessed = new Date(); // Will update this timestamp every time the object is modified
  },
  post:function(obj) {

  }
});

cassandra.sync(UserModel);

module.exports = UserModel;

and can be used like this :

var User = require ('user.model');

var user = new User();
user.email = req.bdy.email;
user.setup = false;
user.insert({})
.then (function (newUser) {
  res.json(newUser);
  next();
});

var user = new User();
user.find ({ email : req.body.email })
.then (function (users) {
    var foundUser = users[0];
    foundUser.email = newEmail;
    foundUser.update({ id : users[0].id })
    .then(function(updatedUser) {
      res.json(updatedUser);
      next();
    });
});
1.8.11

8 years ago

1.8.10

8 years ago

1.8.9

8 years ago

1.8.8

9 years ago

1.8.7

9 years ago

1.8.6

9 years ago

1.8.5

9 years ago

1.8.4

9 years ago

1.8.3

9 years ago

1.8.2

9 years ago

1.8.1

9 years ago

1.8.0

9 years ago

1.7.12

9 years ago

1.7.11

9 years ago

1.7.10

9 years ago

1.7.9

9 years ago

1.7.8

9 years ago

1.7.7

9 years ago

1.7.6

9 years ago

1.7.5

9 years ago

1.7.4

9 years ago

1.7.3

9 years ago

1.7.2

9 years ago

1.7.1

9 years ago

1.7.0

9 years ago

1.6.7

9 years ago

1.6.6

9 years ago

1.6.5

9 years ago

1.6.4

9 years ago

1.6.3

9 years ago

1.6.2

9 years ago

1.6.1

9 years ago

1.6.0

9 years ago

1.5.4

9 years ago

1.5.3

9 years ago

1.5.2

9 years ago

1.5.1

9 years ago

1.5.0

9 years ago

1.4.3

9 years ago

1.4.2

9 years ago

1.4.1

9 years ago

1.4.0

9 years ago

1.3.7

10 years ago

1.3.6

10 years ago

1.3.5

10 years ago

1.3.4

10 years ago

1.3.3

10 years ago

1.3.2

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago