https://github.com/ceejbot/polyclay-cassandra
cassandra persistence adapter for polyclay, the schema-enforcing document mapper
https://github.com/ceejbot/polyclay-cassandra
Last synced: 24 days ago
JSON representation
cassandra persistence adapter for polyclay, the schema-enforcing document mapper
- Host: GitHub
- URL: https://github.com/ceejbot/polyclay-cassandra
- Owner: ceejbot
- Created: 2013-06-05T22:53:32.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2013-11-09T17:01:24.000Z (over 12 years ago)
- Last Synced: 2026-05-30T18:28:14.443Z (about 1 month ago)
- Language: JavaScript
- Size: 326 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
polyclay-cassandra
==================
A cassandra persistence adapter for [Polyclay](https://github.com/ceejbot/polyclay).
[](https://nodei.co/npm/polyclay-cassandra/)
[](http://travis-ci.org/ceejbot/polyclay-cassandra)
This module relies on [scamandrios](https://github.com/ceejbot/scamandrios) for its cassandra driver.
## Installation
`npm install polyclay-cassandra polyclay`
Polyclay is a peer dependency of this module.
## Quick start
A quick example until more documentation is written:
```javascript
var polyclay = require('polyclay'),
CassandraAdapter = require('polyclay-cassandra'),
scamandrios = require('scamandrios')
;
var testKSName = 'polyclay_unit_tests';
var modelDefinition =
{
properties:
{
key: 'string',
name: 'string',
created: 'date',
foozles: 'array',
snozzers: 'hash',
is_valid: 'boolean',
count: 'number',
floating: 'number',
map: 'string',
},
required: [ 'name', 'is_valid', 'required_prop'],
singular: 'model',
plural: 'models'
};
Model = polyclay.Model.buildClass(modelDefinition);
polyclay.persist(Model);
connection = new scamandrios.Connection({
hosts: ['localhost:9160'],
});
var options =
{
connection: connection,
keyspace: 'polyclay_unit_tests',
};
Model.setStorage(options, CassandraAdapter);
```
The keyspace is available at `obj.adapter.keyspace` and the model column family at `obj.adapter.columnFamily`. `adapter.provision()` creates keyspaces and column families if necessary. It is safe to call provision more than once; it will avoid trying to create the tables if they already exist.
*Attachments are no longer supported by the cassandra adapter.*
## Cassandra types
The adapter adds several cassandra-specific types to the core javascript type list. The polyclay model definition names are in the left column. Cassandra types are in the right. No attempt has been made to implement map types with anything other than string keys.
```
| Polyclay type | Cassandra type
| ==============: | :=============
| string | text
| number | double
| boolean | boolean
| date | timestamp
| uuid | uuid
| timeuuid | timeuuid
| set:string | set
| set:number | set
| set:date | set
| set:uuid | set
| set:timeuuid | set
| list:string | list
| list:number | list
| list:date | list
| list:uuid | list
| list:timeuuid | list
| map:string | map
| map:boolean | map
| map:number | map
| map:date | map
| map:uuid | map
| map:timeuuid | map
| array | text (json-stringified)
| hash | text (json-stringified)
| reference | text (json-stringified)
```
## Object inflation
TBD