为doobie select输入类型参数

问题描述

我正在尝试创建一种方法,该方法将接受案例类并以List [C]的形式返回元素。为了测试,我有以下可行的方法

object LocalRun extends App {

  implicit private val cs = IO.contextShift(ExecutionContexts.synchronous)

  private lazy val xa = Transactor.fromDriverManager[IO](
    "org.h2.Driver","jdbc:h2:./dbdir/mydb:mydb","",Blocker
      .liftExecutionContext(ExecutionContexts.synchronous)
  )

  val stmt: String =
    "select table_name,count(1) as col_cnt from information_schema.columns where table_name = 'FUNCTION_COLUMNS'"

  private val proc: fs2.Stream[doobie.hi.ConnectionIO,(String,Int)] =
    HC.stream[(String,Int)](stmt,HPS.set(()),512)

  proc.compile.toList
    .transact(xa).unsafeRunSync.take(5).foreach(e =>
      println(s"table name: ${e._1},number of columns: ${e._2}")
    )

  new Directory(new File("./dbdir/mydb")).deleteRecursively()

}

输出

table name: FUNCTION_COLUMNS,number of columns: 17

我想创建类似的东西

def runSelect[C](stmt: String) = HC.stream[C](stmt,512)

但是编译器向我抛出以下错误:

enter image description here

是否有办法克服此错误并创建多态函数,该函数将接受具有匹配选择条件的任意案例类并返回列表?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...