问题标签 [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 投票
2 回答
184 浏览

postgresql - 如何将 Opaleye 中的新类型键引用为可为空的?

我正在为我的所有表使用新类型的键

我现在想在另一个表中对这样的键有一个可为空的引用,但我正在努力。如何将键引用为可为空的?

0 投票
2 回答
293 浏览

haskell - 通过字符串查询 Opaleye 到 Maybe

我想针对给定值对我的表运行查询,并Maybe a根据是否找到行返回 a 。

我有这个域:

以及表和查询的以下定义:

如前所述,我想通过“标识符”列进行查询,所以我编写了这个查询并希望返回一个 `IO (Maybe User)

这无法编译:

如果我尝试实现该功能:

然后我看到了这个编译错误:

0 投票
1 回答
142 浏览

postgresql - Opaleye 新型

我的 PostgreSQL 数据库中表的数据类型中的一个字段是一种UUID名为ItemId.

但是,当我编译我的项目时,GHC 会抛出:

哪里src/Api/Item.hs是:

我对 Haskell 还是很陌生,但问题似乎是 Opaleye 不知道如何转换ItemId为 aPGUuid但我知道它可以转换UUIDPGUuid. 我将如何编写实例以允许 Opaleye 进行此转换?

0 投票
1 回答
153 浏览

postgresql - 如何概括 Haskell 中的 Opaleye 查询(使用乙烯基)?

我的问题是在下面代码块中的巨大横幅之间。

原谅代码转储,所有想要复制的人都粘贴在这里,并且此代码确实按预期工作,尽管它有点奇怪。注意最后两行,它们打印正确的 SQL。

目标:

我有主键类型的表Text,特别是电子邮件。我没有为每个表编写一个新的查询函数,而是承担了泛化函数的任务,这样我就可以安全地查询任何包含电子邮件的表。

问题:

为了使它起作用,我必须包括:

这让我觉得我做错了什么。对于构建可以从任何包含电子邮件的表中查找记录的查询有什么建议吗?

0 投票
1 回答
104 浏览

haskell - 如何在 Opaleye 中实现这个模糊搜索 sql 查询?

我有一个试图转换为 Opaleye 的 sql 查询。

我将简化我的代码以专注于我的问题,即如何使用 Opaleye 进行模糊搜索

Haskell(带有一些现有的 Opaleye 结构)是

而 Sql 是

通过“模糊搜索”,我的意思是它搜索具有许可证号的任何行,该许可证号包含搜索参数p_license_number的值作为子字符串。

如何将此模糊搜索查询转换为 Opaleye?

这将涉及摆脱 Sql 文件并用getNamesByLicenseNumberHaskell Opaleye 查询替换。我希望答案可能是这样的

除了模糊而不是严格匹配。

0 投票
1 回答
182 浏览

haskell - Haskell 的 Opaleye DSL 可以生成任何给定的 SQL 吗?

我的团队使用Opaleye从.PostgresHaskell

但是,我们也使用 rawSQL来执行以下操作:

  • 初始化数据库。包括命令create databasecreate table

  • 当我们更改架构时执行数据库迁移,包括各种命令。

是否可以用 完全替换此原始SQL代码Opaleye

可以Opaleye换任何SQL吗?

0 投票
3 回答
199 浏览

haskell - 左加入 Opaleye

我一直在尝试在项目中使用 Opaleye 运行左连接,但无法编译代码。我从两个代表关联表的“模型”开始:

第一的:

并且:

正如类型所反映的,ModelA可以没有关联的ModelB

我需要一个查询来获取由foreignA == primB上的表之间的左连接给出的(ModelA,Maybe ModelB)对。我期待它看起来像:

但这不起作用。我还尝试了多种变体,特别是我替换了查询中的类型签名以明确说明右侧列的可空性:

但这失败了:

Data.Profunctor.Product.Default.Class.Default Opaleye.Internal.Join.NullMaker ModelBColumn 没有实例(列(可空 PGUuid),列(可空 PGText)。

如何在 Opaleye 中进行此查询?

0 投票
1 回答
101 浏览

haskell - 在不使用 TemplateHaskell 的情况下声明 Opaleye 表

opaleye基础教程给出了一个关于如何在记录类型和查询中使用用户定义类型的例子:

函数pBirthday是使用生成的TemplateHaskell

makeAdaptorAndInstance中的定义在哪里Data.Functor.Product.TH

我想避免使用TemplateHaskell. opaleye教程只是参考了 的文档,Data.Functor.Product.TH里面只解释了生成的实例makeAdaptorAndInstance将是:

并将pBirthday具有以下类型:

但我找不到任何关于如何手动填充实现这些功能的信息。

0 投票
0 回答
89 浏览

haskell - 如何查看 Opaleye 查询生成的 SQL?

Opaleye 教程中,第 88 行列出了以下示例ghci命令。

personQuery有一个预定义的查询,它似乎printSql是一个打印由它生成的 SQL 的函数。

printSql这个函数是在哪里定义的?我已经搜索了opaleye 包的所有模块,但没有看到它在那里定义。

如何查看 opaleye 查询生成的 SQL?

0 投票
1 回答
76 浏览

haskell - 在 Opaleye 中,如何在同一个查询中插入两个表?

我的数据库有两个具有双射行对应关系的表(如问题所述)。这似乎意味着在不违反外键约束的情况下向每个表插入一行需要在同一个查询中进行两次插入。

Opaleye.Manipulation模块中,我看到诸如runInsertMany插入单个表的函数。但是,这些返回的是一个IO动作而不是一个查询,我不知道如何将它们组合成一个。在 Opaleye 中,我看不到如何插入两个表,或者插入Query可能与另一个表结合。

Opaleye 可以在同一个查询中插入两个不同的表吗?如何?