首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用幻影-dsl将模式转换为cassandra

无法使用幻影-dsl将模式转换为cassandra
EN

Stack Overflow用户
提问于 2017-01-10 12:47:24
回答 1查看 417关注 0票数 0

在本教程之后,尝试使用phantom-dsl在cassandra中创建一个模式以进行单元测试:

http://outworkers.com/blog/post/phantom-tips-3-understanding-phantom-connectors

我在尝试自动生成模式时遇到了这个问题。

代码语言:javascript
复制
[ERROR] /home/.../test/BaseCassandraSpec.scala:54: error: not enough arguments for method autocreate: (keySpace: com.websudos.phantom.connectors.KeySpace)
com.websudos.phantom.builder.query.CreateQuery.Default[com.neruti.db.models.ConcreteUserModel,com.neruti.User].
[ERROR] Unspecified value parameter keySpace.
[ERROR] Await.result(database.userModel.autocreate().future(),10.seconds)

有什么建议吗?

目前正在使用1.29.6版本

BaseCassandraSpec

代码语言:javascript
复制
import com.neruti.User
import com.neruti.db.models._
import com.neruti.db.databases._
import com.neruti.db.services._
import com.neruti.db.Connector._    
import org.scalatest._
import org.scalatest.{BeforeAndAfterAll,FlatSpec,Matchers,ShouldMatchers}
import org.scalatest.concurrent.ScalaFutures
import org.scalamock.scalatest.MockFactory
import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
import scala.concurrent.ExecutionContext.Implicits.global

 override protected def beforeAll(): Unit = {
    Await.result(database.userModel.autocreate().future(),10.seconds)
   } 

数据库

代码语言:javascript
复制
class UserDatabase (val connector: KeySpaceDef){
  object userModel extends ConcreteUserModel with connector.Connector
}

object ProductionDb extends UserDatabase(connector)

trait ProductionDatabaseProvider {
  def database: UserDatabase
}

trait ProductionDatabase extends ProductionDatabaseProvider {
  override val database = ProductionDb
}

object testDB extends UserDatabase(testConnector)

trait testDatabaseProvider {
  def database: UserDatabase
}

trait testDatabase extends testDatabaseProvider{
  override val database = testDB
}

连接器

代码语言:javascript
复制
package com.neruti.db

import com.neruti.db.models._

import com.websudos.phantom.database.Database
import com.websudos.phantom.connectors.ContactPoints
import com.websudos.phantom.dsl.KeySpaceDef

object Connector {



    // TODO: these key value pairs shld get from HOCON config file
      val host= Seq("127.0.0.1")
      val port = 9042
      val keySpace: String = "nrt_entities"
      //  val inet = InetAddress.getByName

      lazy val connector = ContactPoints(host,port).withClusterBuilder(
        _.withCredentials("dev", "nrtDev1989")
      ).keySpace(keySpace)

      //  embedded cassandra is not supported anymore.  Check phantom-sbt.
      //    lazy val testConnector: KeySpaceDef = ContactPoint.embedded.keySpace(keySpace)
      lazy val testConnector: KeySpaceDef = ContactPoints(host,port).noHeartbeat().keySpace(keySpace)
    }
EN

回答 1

Stack Overflow用户

发布于 2017-01-30 23:28:38

我会升级到幻影2.0.0作为附带说明。接下来,您的代码中有许多需要改进的地方,首先是特征的大写化。

您应该使用database.createdatabase.createAsync,这不再需要您重新传递隐式键空间或会话。请记住,此API是幻影-dsl的2.1.1版本,可在Maven Central上使用。

代码语言:javascript
复制
package com.neruti.db

import com.neruti.db.models._

import com.outworkers.phantom.connectors.ContactPoints
import com.outworkers.phantom.dsl._

object Connector {



    // TODO: these key value pairs shld get from HOCON config file
      val host= Seq("127.0.0.1")
      val port = 9042
      val keySpace: String = "nrt_entities"
      //  val inet = InetAddress.getByName

      lazy val connector = ContactPoints(host,port).withClusterBuilder(
        _.withCredentials("dev", "nrtDev1989")
      ).keySpace(keySpace)

      lazy val testConnector: KeySpaceDef = ContactPoints(host, port).noHeartbeat().keySpace(keySpace)
    }


class MyDb(override val connector: CassandraConnection) extends Database(connector) {
  ... tables
}

object TestMyDb extends MyDb(Connector.testConnector)

import com.outworkers.phantom.dsl.context
// Now this will only require an execution context, nothing more
TestMyDb.create()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41569218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档