Skip to content
This repository has been archived by the owner on Dec 12, 2023. It is now read-only.

Automatic Adapter for Scala Case classes to Java Cassandra Driver

License

Notifications You must be signed in to change notification settings

reactivecore/cassandra_caseclass_adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cassandra Case Class Adapters

Build Status

Maps Case classes to the Cassandra Java Driver using shapeless powered type classes.

Note:

  • this is in early development stage
  • contains weird hacks and class casts
  • not API stable

Thanks a lot to the Shapeless team for their wonderful work.

Add Dependency

Builds are available for Scala 2.11, 2.12 having a dependency to the Cassandra Driver 4.7.2.

Add this to your build.sbt:

libraryDependencies += "net.reactivecore" %% "cassandra-caseclass-adapter" % "0.0.2"

If you use Scala 2.10, you also need (see Shapeless Documentation)

libraryDependencies += compilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)

Usage

Define a case class

case class Person (
    id: UUID,
    name: String,
    age: Int
  )

Have a cassandra table

  CREATE TABLE persons (
    id UUID,
    name TEXT,
    age INT,
    PRIMARY KEY (id)
  );

And let the Adapter automatically generated

  import net.reactivecore.cca.CassandraCaseClassAdapter

  val adapter = CassandraCaseClassAdapter.make[Person]("persons")
  val session = // open cassandra session
  val person = Person(UUIDs.random(), "John Doe", 42)
  adapter.insert(person, session)
  
  val back: Seq[Person] = adapter.loadAllFromCassandra(session)

Supported

  • boiler plate free fromRow, insert, loadAllFromCassandra

Supported Types

  • Most fundamental types
  • Option
  • Set of Primitives and of UDT
  • List of Primitives (as Seq) and of UDT
  • Primitive UDT handling

Not supported / tested yet

  • Map
  • Tuples
  • Combination of Set/Seq with more than one UDT
  • Adding custom types
  • Prepared Statements for fast insert

Not planned (yet)

  • Query Helpers

Testing

  • The unit tests need a Cassandra Instance running on 127.0.0.1
  • They will recreate a keyspace called unittest on each single testcase.

About

Automatic Adapter for Scala Case classes to Java Cassandra Driver

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages