问题标签 [doobie]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
896 浏览

scala - 在 Doobie 中并行运行查询

是否可以使用 Doobie 并行运行多个查询?

我有以下(伪)查询:

我尝试的是以下内容:

但是,没有找到 的 NonEmptyParallel 实例ConnectionIO

错误:(107, 54) 找不到参数 p 的隐式值:cats.NonEmptyParallel[doobie.ConnectionIO,F] val result = (program(i1),program(i2)).parMapN{case (a ,b) = > a ++ b}

我是否遗漏了一些显而易见的事情或尝试了一些无法完成的事情?谢谢

0 投票
2 回答
128 浏览

scala - 列出多个匿名/下划线参数以供理解

我对 Scala/功能有点陌生,所以我还不能使用技术语言。

我在理解方面遇到问题

我正在尝试重构 _ <- createBanco & _ <- createBancoMedio,它们都是 ConnectionIO[Int] 对象。

我想将它们转换为单个列表(createBanco,createBancoMedio),然后执行交易。

但是,我会通过这样做来改变理解的返回类型。我想知道是否有任何方法可以做到这一点而不影响 for 输出值

基本上,将列表视为手动编写多个匿名参数。

0 投票
1 回答
996 浏览

scala - Doobie 通过 ConnectionIO 程序列表进行交易

假设我有一个 Doobie 程序列表(全部带有Unit类型参数,fwiw):

有什么办法可以在一笔交易中运行它们吗?在这里理解是行不通的,因为我只知道运行时程序列表的精确组成。本质上,我想我需要将它们折叠在一起。

我想这个问题一般适用于 Cats 中的 Free Monads,所以我也会标记 Cats。谢谢。

0 投票
1 回答
519 浏览

mysql - 如何使用 Play JSON 为 MySQL 创建 Doobie Meta 实例?

如何使用Doobie、MySQL 和 Play JSON 在查询级别实现基本的序列化/反序列化?

0 投票
1 回答
304 浏览

scala - 如何使用 doobie 连接到 Hive

有一个用于 hive 的 jdbc 驱动程序,但似乎没有完全运行。我使用默认的 doobie Transactor 连接到它,就像

我收到一条错误消息

[错误] 线程“主”java.sql.SQLFeatureNotSupportedException 中的异常:org.apache.hive.jdbc.HiveConnection.rollback(HiveConnection.java:1327) 不支持方法 [错误] doobie.free.KleisliInterpreter$ ConnectionInterpreter$$anonfun$rollback$1.apply(kleisliinterpreter.scala:643) [错误] 在 doobie.free.KleisliInterpreter$ConnectionInterpreter$$anonfun$rollback$1.apply(kleisliinterpreter.scala:643) [错误] 在 doobie.free。 KleisliInterpreter$$anonfun$primitive$1$$anonfun$apply$1.apply(kleisliinterpreter.scala:99)

如何使用 Doobie 连接到 Hive?

0 投票
0 回答
294 浏览

scala - 重试 Monix 任务 - 为什么这里需要 Task.defer?

我最近发现了一个在使用 Monix 时无法完全理解的案例Task

有两个函数(在队列消息处理程序中):

的 for-comprehension的内部doRollback都是一组返回 monad 的doobie调用ConnectionIO[_],然后transact在其上运行将组合变成 Monix Task

现在,如handle函数所示,我希望整个过程在失败的情况下重试 5 次。神秘的部分是这个简单的调用:

并没有真正重新启动异常操作(在测试中验证)。为了获得这种重试行为,我必须明确地将其包装在 中Task.defer,或者Task以任何其他方式将其置于“上下文”中。

这就是我不完全明白的一点:为什么会这样?doRollback已经给了我Task实例,所以我应该可以调用onErrorRestart它,不是吗?如果不是这种情况,我如何确定Task我从“某处”获得的实例是否可以重新启动?

我在这里想念什么?

0 投票
1 回答
672 浏览

scala - 当 IO 卡在中间时如何编写 doobie 事务

我想编写一个基本的 doobie 读/写事务,但关键是IO中间有一个返回调用。我想做这样的事情:

但我无法在IO. 因此,在第二种情况下,我会被卡住,IO[ConnectionIO[Something]]这意味着我的交易最终会像ConnectionIO[IO[ConnectionIO[Something]].

我想要的是一个ConnectionIO[IO[Something]]我可以在单个事务中运行的结果,IO[IO[Something]]然后我可以轻松地将其展平。(我不想运行IO。)有意义吗?知道这是否有可能实现吗?

0 投票
2 回答
1144 浏览

sql - 在 Scala 中的 Doobie 上的事务中获取或插入

我正在阅读 Doobie 文档并尝试在事务中进行简单的获取或创建。我从第一个查询中获得了一个选项,并尝试getOrElse在 else 中执行并运行插入,但是我一直value map is not a member of AnygetOrElse调用中得到 a。获取现有行或创建新行instances并在事务中返回该结果的正确方法是什么?

0 投票
2 回答
1453 浏览

scala - 如何使用 doobie 对 Scala 中的 PostgreSQL 数据库执行字符串 SQL 语句列表?

我将以下 10 行 Python 代码移植到 Scala:

我有以下等效的 Scala 代码:

我想在单个事务中针对数据库执行(并打印)一堆 SQL 语句(假设它是 Postgres)并完成。

我如何使用doobie做到这一点?

笔记:

  1. 我无法将接口更改为我的execute()(包括我无法添加类型或隐式参数)。它必须接受字符串用户、密码等和一个可变参数,queries: String*从而保持接口与 Python 接口相同。

  2. 还请提及所需的所有进口

0 投票
1 回答
1951 浏览

scala - 如何从 Async[IO] 创建 Async[Future]

我正在尝试在我的 doobie 存储库代码中隐式添加异步和同步。Sync and Async[F] 工作正常 IO。我想将它们转换为 Future 并面临问题

我试图从 IO 创建我自己的 Aync

我对在 asyncF 和括号中的两个函数的实现感到震惊 有人可以帮忙吗?