2016-10-10 5 views
0

私は例えば、カスタムカサンドラの種類とテーブルを定義した:ファントムDSLとカサンドラのカスタム列タイプ

CREATE TYPE my.usertype (
    id text, 
    firstname text, 
    lastname text 
); 


CREATE TABLE mytable (
    user frozen <usertype>, 
    ..., 
    PRIMARY KEY(user) 
); 

どのように私は、Scalaではカサンドラテーブル定義で、このユーザタイプを定義することができますか?

class MyTable extends CassandraTable[X, Y] { 
    object user extends UserColumn(this) with PartitionKey[User] 
         ^^^^^???       ^^^??? 

どのように私はUserTypeのカスタムUserColumnを実装することができますか?私は列の実装のためにPhantomコードをチェックしましたが、例や説明は素晴らしいでしょう。

答えて

1

は、2週間の時間にに加入するために利用される、唯一のプロ:

@Udt case class User(
    id: String, 
    firstname: String, 
    lastname: String 
) 

そしてあなたがUDTColumnを使用:

class MyTable extends CassandraTable[MyTable , Y] { 
    object user extends UDTColumn[MyTable, Y, User](this) with PartitionKey[User] 
} 

これにより、自動化されたスキーマの生成とすべてのelあなたのUDTの自動初期化を含む。

1

ので、ライブラリの作者によると、ユーザー定義型は、ファントムのオープンソース版でサポートされていません:https://github.com/outworkers/phantom/issues/496

しかし、あなたは部分的にそれがここに記載されているように、MapColumnを拡張することによってこれを克服することができる場合がありますPhantom-DSL cassandra with frozen type。もちろん、それは完璧ではありません。スキーマを作成するためのCQLを生成することができず、いくつかの手作業による配管が必要になります。

だから、多かれ少なかれ、このように好きなことができること:ファントムで

class MyTable extends CassandraTable[MyTable , Y] { 
    object user extends MapColumn[MyTable , Y, String, String](this) with PartitionKey[MapColumn...] 
+0

PRをご利用いただきありがとうございます。 – Bruckwald

関連する問題