casio

0.0.0 • Public • Published

Casio

This is a model layer and CQL generator which uses the node-cassandra-client project.

Caveats Emptor

  • This is alphaware
  • Assumes all models have a primary key defined (untested otherwise)

Modeling

The library support modeling two types of Objects.

Model##

You can think of this a traditional Model in the ORM-sense.

You define a mix of properties and associations.

As of now, the only supported default_validation types are:

  • text
  • counter (enables support for incr/decr columns)

ModelArray##

This is a wrapper around columnfamily's with an unknown number of columns.

Use this if you need to support SlicePredicate's (i.e. range queries)

It behaves similar to a list and has support for pagination.

Examples##

With a ColumnFamily definition of:


CREATE COLUMNFAMILY Keyboard (
    id text PRIMARY KEY,
    make text,
    model text,
    serial int,
    works boolean,
    created_at timestamp,
    updated_at timestamp
) WITH default_validation=text AND comparator=text;

You would have a Model definition as follows:

var Keyboard = Casio.model('Keyboard');

Keyboard.property('id', String, {
    primary:true
});

Keyboard.property('make', String, {
    default:'Casio'
});
Keyboard.property('model', String, {
    default:'Casiotone MT-820'
});
Keyboard.property('serial', Number, {});
Keyboard.property('works', Boolean, {});

Keyboard.classMethods({
    ....
})

Keyboard.instanceMethods({
    ....
})

See test/model and test/keyspaces for more examples.

Test Suite

Pre-requisites:

  • Standalone Cassandra server running on localhost:9160

To run:

  • npm test

or...

  • ./test/testsuite.sh

Notes

BigInt

in order to support bigints out of the box the cassandra-client connections must enable them. still trying to figure out the best way to support these.

Unique Columns

Not currently supporting unique values Requires doing a manual lookup if you need unique column support Will eventually work, but requires validation hooks are in place, first.

Dependents (0)

Package Sidebar

Install

npm i casio

Weekly Downloads

1

Version

0.0.0

License

none

Last publish

Collaborators

  • grippy