问题标签 [opaleye]

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 回答
49 浏览

haskell - Opaleye 和 IfPP 中的 leftJoinF

我想使用 aLEFT JOIN来获取产品及其(可选)属性。我有如下类型:

我的意图是使用:

这不会编译,因为:

我真的应该定义这个实例吗?它有什么用,我该怎么做?

或者如果我不应该使用Maybe,我还能做什么?

0 投票
2 回答
241 浏览

haskell - 为什么数据库查询是使用箭头的好地方?

我正在读这个,它说:

好吧,关键是箭头符号禁止了一些符号允许的计算。特别是所有“箭头动作”必须是“静态”已知的。

它解释了:

静态已知”意味着如果我们有几行箭头符号

> -- y <- action1 -< x

> -- z <- action2 -< y

那么表达式 action2 不能依赖于 x 或实际上绑定在箭头符号行左侧的任何东西。

据我了解,这种限制使箭头值得。

现在,我正在尝试学习 Opaleye,我注意到它使用箭头将事物组合在一起。

为什么 Opaleye 使用箭头?为什么箭头非常适合这项工作?使此限制有用的数据库/查询是什么?

0 投票
1 回答
64 浏览

haskell - opaleye 是否支持 upsert / INSERT ON CONFLICT?

我正在尝试创建一个查询,例如:

但是我看不到如何用 opaleye 做到这一点?这不支持吗?

奇怪的是,我们Insert定义了一个iOnConflict :: Maybe OnConflict. 然而OnConflict被定义为:data OnConflict = DoNothing所以它现在看起来只是一个占位符?

通过 github 上列出的问题,我看到它导致了最终的 PR:https ://github.com/tomjaguarpaw/haskell-opaleye/pull/385/files但我真的无法理解它吗?我不确定它是仅实现占位符,还是实际上实现了功能。

0 投票
2 回答
49 浏览

sql - 查询 M:N 关系中的所有 N 个元素

假设我有以下表格,这些表格对附加到文章的标签进行建模:

n检索带有所有附加标签名的最新文章的惯用方法是什么?这似乎是一个标准问题,但我是 SQL 新手,不知道如何优雅地解决这个问题。

从应用程序的角度来看,我想编写一个函数,它返回表单的记录列表[title, content, [tags]],即,附加到文章的所有标签都将包含在可变长度列表中。SQL 关系没有那么灵活。到目前为止,我只能考虑一个查询来连接为每个文章/标签组合返回一个新行的表,然后我需要以编程方式将其压缩为上述形式。

或者,我可以想到一个解决方案,我发出两个查询:首先,对于文章;第二,inner join关于链接表和标签表。那么,在应用程序中,我可以过滤每个结果集article_id以获得给定文章的所有标签吗?后者似乎是一个相当冗长和低效的解决方案。

我错过了什么吗?是否有规范的方法来制定单个查询?还是单个查询加上较小的后处理?

除了简单的 SQL 问题之外,在 Opaleye DSL 中相应的查询会是什么样子?也就是说,如果它可以翻译呢?

0 投票
2 回答
60 浏览

haskell - Opaleye 中跨链接表的数组聚合

我正在尝试构建与以下 SQL 匹配的 Opaleye 查询:

涉及的表格(简化)是:

我的目标是查询附加了一个或多个标签的文章,并将所有附加标签作为数组检索。

到目前为止,我得到了以下基本查询:

但是,我无法使聚合工作:以下内容不进行类型检查,并且我不明白如何使用上述查询组合此聚合:

在一些博客文章和 GitHub 问题中,我发现聚合不适用于 Product-Profunctors 和 Arrows,因此不能包含在箭头查询中。然而,我对 Haskell 比较陌生,并没有真正理解这两个库背后的理论(似乎没有适合初学者的文档);因此,我无法提出如何将查询与聚合相结合的一般结构。William Yao here有一些示例,但我不了解一般概念,因此无法将这些示例应用于我的问题。

如果有人可以提供有关如何在 Opaleye 中使用常规查询组合聚合的见解,我将不胜感激,谢谢!