问题标签 [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 回答
1018 浏览

scala - 如何将 java.util.UUID 转换为 doobie.syntax.SqlInterpolator.SingleFragment?

我正在尝试使用 doobie、http4s 和 circe 建立一个带有数据库的简单 scala 应用程序。

如何将 java.util.UUID 转换为 doobie.syntax.SqlInterpolator.SingleFragment ?

0 投票
1 回答
845 浏览

concurrency - 将 Hikari 事务器用于 Doobie 和 ZIO 时遇到死锁

我在 ZIO 应用程序中使用 Doobie,有时会出现死锁(应用程序完全冻结)。如果我只在一个内核上运行我的应用程序,或者如果我达到与数据库的最大并行连接数,就会发生这种情况。

我的代码如下所示:

或者,我在 Hikari ( config.setLeakDetectionThreshold(10000L)) 上设置了泄漏检测参数,我得到泄漏错误,这不是由于处理数据库查询所花费的时间。

0 投票
1 回答
466 浏览

scala - Doobie for Scala / Play 框架中的事务

我有一个关于 doobie 交易的问题。我查看了此处的文档,看起来它一次只能处理一个查询?

有没有可能有这样的东西

任何人都可以指出我的任何想法或更多示例/文档将不胜感激!谢谢你!!

0 投票
2 回答
528 浏览

scala - 使用 Doobie 在单个事务中进行多个查询?

假设我有两个案例类C1C2每个类都继承自 trait T。我有两个Query0由这些案例类参数化的对象Query0[C1]Query0[C2]. 目标是,当我执行这些查询时,我想获得一个List[T]包含这两个查询结果的单个查询。现在我让它在单独的交易中工作得很好。

问题是我使用 BigQuery 作为数据库后端,并且事务有很多与之相关的开销。我希望在一个事务中执行这两个查询并让它返回一个 List[T] 对象。有没有办法做到这一点?

0 投票
0 回答
238 浏览

postgresql - Doobie 中的 Postgresql 数组编码 – text[] 与 varying[]

假设我们有这个 postgresql 模式:

以下在纯 SQL 中工作,返回第 1 行和第 2 行(@>是 pg 中的“包含”运算符):

但在Doobie中也是如此(带有 postgresql 扩展):

失败:

将插值searchTerms转换为text[]似乎可以解决问题:

同样,我可以在数据库模式中将fields列的类型从更改为text[]tovarchar[]以避免强制转换,这也将编译并返回正确的行。

我的主要问题是我不知道为什么 Doobie 会这样。对于自定义类型,我可能会再次遇到同样的问题,所以我需要了解为什么$searchTerms解码成varying[]而不是text[],以及我可以做些什么来改变这种行为,以便我可以保留text[]列类型并避免强制转换。我猜想某处可能有一个隐式实例控制它,但我无法弄清楚它是什么。

0 投票
0 回答
123 浏览

scala - 是否可以使用cats.effect.IO 和FS2 Streams 将值异步推送到Kafka,同时立即返回HTTP 响应?

我试图解决的问题可以描述如下:

  1. k8s 调度程序每周一早上调用我的 Finagle/Finch 应用程序的 HTTP 端点
  2. HTTP 端点将处理请求并返回一个IO[Int](立即)
  3. 在生成 HTTP 响应之前,应该启动另一个函数的执行,因此它将异步运行
  4. 异步进程应该使用来自使用 Doobie 生成的 Postgres RDB 的数据流
  5. 该流应在恒定内存中进行操作,并且应将数据推送到 Kafka 主题中

所以本质上我想从数据库中获取要处理的键的数量,触发异步执行,enqueueKeys()它将获取 numberOfKeys 作为输入参数,并将这个数字返回给 HTTP 端点以便在之后立即构建响应,而不等待enqueueKeys()完成其计算。

我想知道是否有可能enqueueKeys()作为批处理过程异步执行,该批处理过程应该发生在另一个线程池 - 另一个 ContextShift 上。使用cats.effect.Async或者使用FS2 是否可行?

0 投票
1 回答
271 浏览

scala - 如何将 Doobie 生成的 FS2 Stream 发布到 Kafka

我想将一长串事件发布到使用 fs2.Stream 的 Kafka 中,该 fs2.Stream 对应于一个非常大的 DB 行列表,如果编译为 List,最终将导致 Out Of Memory 错误。

因此,假设我有一个非常大的 UUID 键列表,其中包含数百万条记录:

并且我想使用这个 Publisher 将一个事件发布到 Kafka 中,该事件对应于 500 个键的块:

我想创建一个函数来将此流排入队列/发布到 Kafka:

如何使用由数据库产生的流,将其拆分为恒定大小的块,然后将它们中的每一个发布到 Kafka 中?

显然,很难找到关于这个主题的好的文档或示例。你能指出我正确的方向吗?

0 投票
1 回答
176 浏览

scala - 具有值类字段的实体的 Doobie 查询

我正在使用Doobie来管理数据库持久性。我在我的实体中使用值类Foo字段,即

然而编译器抱怨缺少Read[(Int, String, LocalDateTime)].map {... 关于如何解决这个问题的任何建议?首先,当涉及到实体时,使用值类是一个坏主意吗?谢谢

0 投票
1 回答
796 浏览

scala - Is it okay to use "unsafeRunSync()" in Cats-Effects?

I am using Doobie and in the examples that I found, it uses unsafeRunSync, like:

Under the hood, this function is implemented as follows:

In the docs, I found that "Please note that this function is intended for testing; it should never appear in your mainline production code!". I wonder if it is okay then to use unsafeRunSync in production if it uses this function under the hood?

Also, how do I put a timeout on the execution if not with unsafeRunTimed?

0 投票
0 回答
65 浏览

postgresql - 将 akka 消息写入 doobie 作为 postgres 的接收器

当我在收到消息数据时尝试从 akka 演员写入 postgres 表时遇到问题。我不确切知道真正的问题,我认为这是异步上下文,因为当我调用一个带有一些列表数据作为参数的函数时,该函数应该将列表数据写入 postgres,而不是什么都不执行,它不会仅标记任何错误,它不执行写入功能。数据来自休息点,我使用 akka http 发出请求。

处理写入 postgres 的代码演员。编码:

code 是一个对象,它有一个写入 postgres 的函数,这个函数是从 actor 接收调用的:

错误在于:

如果有另一种方法可以做到这一点,它可能会有所帮助。