Удобный способ вставки значений в Cassandra с помощью Phantom

Кто-нибудь знает удобный способ вставки значений в Cassandra через phatom-dsl? В настоящее время я делаю это:

case class Entry(id: UUID, firstName: String, lastName: String)

sealed class EntryTable extends CassandraTable[EntryTable, Entry] {
  override val tableName = "entries"
  object id extends UUIDColumn(this) with Index[UUID]
  object firstName extends StringColumn(this)
  object lastName extends StringColumn(this)

  override def fromRow(r: dsl.Row): Entry = {
    Entry(id(r), firstName(r), firstName(r))
  }
}

object EntryTable extends EntryTable {
   private val connector = CassandraConnector.apply(Set(InetAddress.getByName("localhost")))
   implicit val keySpace = KeySpace("keyspace")

   def insert(e: Entry) = {
     connector.withSessionDo(implicit session => {
       insert().value(_.id, e.id)).value(_.firstName, e.firstName).value(_.lastName, e.lastName).future()
     }
   }
}

Но я хотел бы сделать:

def insert(e: Entry) = {
  connector.withSessionDo(implicit session => {
    insert().value(e).future()
  }
}

Что было бы намного удобнее, когда в классе case много полей. Любые идеи?


person LuGo    schedule 06.08.2015    source источник


Ответы (1)


Вы используете API немного неправильно, и мы публикуем несколько руководств, чтобы сделать «новый» способ общедоступным. Тем временем его базовая версия доступна здесь и эта ветка в шаблоне активатора также описывает все, что вы надо знать.

В частности, способ вставки записей описан здесь.

person flavian    schedule 07.08.2015