Scala 在Slick 3.0中恢复受影响的行(Int)

Scala 在Slick 3.0中恢复受影响的行(Int),scala,slick,Scala,Slick,在以前版本的Slick中,在返回插入结果的TableQuery上定义了insert函数。我正在迁移到新的API并执行以下操作: DBIO.seq(someTable += someValue) 但这种类型 dbio.DBIOAction[Unit, NoStream, Write] 如何恢复受影响的行 编辑 这里的问题似乎是类型没有按照我期望的方式排列。以下是Scala对这些类型的看法: val q: PostgresDriver.DriverAction[PostgresDriver.In

在以前版本的Slick中,在返回插入结果的TableQuery上定义了insert函数。我正在迁移到新的API并执行以下操作:

DBIO.seq(someTable += someValue)
但这种类型

dbio.DBIOAction[Unit, NoStream, Write]
如何恢复受影响的行

编辑

这里的问题似乎是类型没有按照我期望的方式排列。以下是Scala对这些类型的看法:

val q: PostgresDriver.DriverAction[PostgresDriver.InsertActionExtensionMethods[(String, String)]#SingleInsertResult, NoStream, Write] = Admins.tableQuery += ((username, grantor))
val seq: dbio.DBIOAction[Unit, NoStream, Write] = DBIO.seq(q)
db.run(seq)
这对我来说毫无意义。如果
q
具有类型
DriverAction[PostgresDriver.InsertActionExtensionMethods[(String,String)]\SingleInsertResult…
其中SingleInsertResult是
Int
的类型别名,那么my
DBIO.seq
不应该返回
DBIOAction[Int,NoStream,Write]

查看

它与slick 2.x没有太大区别,但现在一切都返回了未来

也许是一些类似的东西(在我脑子里,我现在无法自己测试)


我没有详细了解stefan对.seq等所做的操作,但这可能只是一个缺少的功能,其中组合操作不会组合受影响的行。也许可以在github slick/slick.IIRC打开一个票据,
DBIO.seq
用于将许多不同的查询(甚至是不同类型的查询)组合在一起但是,由于它不能为所有查询返回单个值,因此它总是返回
Future[Unit]
,因此您无法恢复查询结果、受影响的行等。请参阅sequence的一个更简单版本,它将许多具有任何返回类型的DBIOActions作为varargs,并返回按顺序执行单个操作的DBIOAction(使用andThen),最后返回()。
val users = TableQuer[Users]
// this is the query
val q = (users += User(None, "Stefan", "Zeiger"))
// now you run it
db.run(q).map{ affectedRows =>
  case 1 => println("success")
  case _ => println("oops")
}