Scala Phantom Cassandra 插入方法 returns 空 ResultSet

Scala Phantom Cassandra insert method returns empty ResultSet

我想将数据插入 Cassandra 中的 table,然后从列 "user_id" 中插入 return 值,而不是完整的结果集。这是我的代码片段:

   def create(user: User): Future[UUID] = {
     insert
       .value(_.id, user.id)
       .value(_.email, user.email)
       .value(_.name, user.name)
       .consistencyLevel_=(ConsistencyLevel.ALL)
       .future()
       .map(r => fromRow(r.one()).id)
    }

   def fromRow(r: Row): User = {
     User(id(r), email(r), name(r))
   }

所以 future() returns Future[ResultSet]。之后,我尝试从 ResultSet 中检索 Row,将其修改为 User 并最终获取 id。尽管数据已保存到我的 table,但我得到了

ResultSet[ exhausted: true, Columns[]]

ResultSet 的列为空,因此 r.one() return 为空。 我还没有为我的目的找到任何例子。那么,phantom-dsl 可以做类似 Quill 的事情吗?

val q = quote {
  query[Product].insert(lift(Product(0L, "My Product", 1011L))).returning(_.id)
}

所以在较新版本的 phantom 中,create 方法是自动生成的。更多详细信息 herefromRow 方法也会自动生成,因此您无需手动输入。

长话短说,这是您可以使用的:

def create(user: User): Future[UUID] = {
  store(user)
    .consistencyLevel_=(ConsistencyLevel.ALL)
    .future()
    .map(_ => user.id)
}