This project will give you the idea on how to design your cassandra tables in scala using the phantom-dsl. My inspiration is to bring here a more real world example based on this library.
Across the code, you will find the following features:
In the class Connector
you will find two connectors:
- Connect to a Cassandra Cluster somewhere
- Connect using an embedded Cassandra (for tests only running through
sbt test
)
Phantom-DSL offers to you an easy way to set the consistency level for any query you want to execute. Throught the GenericSongsModel
you will find this piece of code .consistencyLevel_=(ConsistencyLevel.ONE)
where you can change it to whatever you want, accordingly to your needs.
This is maybe the main goal of this project, showing to you how to handle multiple versions of the same table. Here we have:
- Songs
- SongsByArtist
You will find how to insert and delete on both tables
Using sbt test
you can run the tests without having any previously Cassandra instalation up and running.
Under the test folders, you will find a very simple Streaming example, creating a Source
from a publisher provided by the phantom's reactive-streams module.
- http://docs.datastax.com/en/cql/3.1/cql/ddl/dataModelingApproach.html
- https://github.com/outworkers/phantom
- https://medium.com/@foundev/cassandra-batch-loading-without-the-batch-keyword-40f00e35e23e
Special thanks to Flavian who helped me to find out the best way to use phantom to model our Cassandra tables.