问题标签 [haskell-persistent]
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.
sql - 在 Haskell/Persistent 中使用没有 ID 列的 SQL 表
我想使用这个简化的模式将现有数据库与Persistent一起使用:
该entities
表有一id
列,这很好。但是,该entity_links
表没有一个,我不想添加一个。相反,它具有主键(source_id, target_id)
。每当我想插入一个EntityLink
时,我都会收到此运行时错误:
这是我EntityLink
在代码中插入 an 的方法,给定有效的sourceId
and targetId
:
如何id
为类型禁用 Persistent 中的列EntityLink
?
haskell - 使用 Esqueleto 和 Template Haskell 动态构建 SQL 查询?
我正在编写一个带有 Yesod 和 Persistent 的 webapp。我有一个带有多个表的 SQL 数据库,其中包含我的“项目”的特征。我有一个主表和与 id 链接的具有多个值的附加表的选项。
用户应该能够选择他想要过滤的那些特征并指定过滤值。如果用户过滤操作系统,SQL-Query 的许可证和编码将如下所示:
但我不想总是加入所有表,因为当有很多表但用户只过滤少数表时,这对性能非常不利。但我也不想为每个可查询功能组合编写一个查询,因为这意味着编写 N² 大部分相同的查询。
'on' 和 'where' 子句可以根据我们是否要过滤而动态完成。但是连接在 Lambda 函数的参数范围内。我发现没有办法建立这个依赖于外部变量。
所以我认为 Template Haskell 可能会成功……我开始学习 TH 并将查询的核心转换为 TH。但是现在我被卡住了,不确定 TH 是否可以帮助我以及它是否是正确的方法?
所以这是我使用 Template Haskell 的进展:
所以我希望你能得到帮助:
- 我可以/应该使用 Template Haskell 来做到这一点吗?
- 如果是这样:我怎样才能用参数调用函数 foo ?
- 如果不是:什么是正确的解决方案?
haskell - 为我的模型获取持久的字段定义
给定这样的持久模型定义:
我正在寻找一种方法来获取此模型的字段定义。FieldDef
看起来很有前途的数据类型,但是持久化不生成getPersonFields :: [FieldDef]
函数,那怎么办呢?
如果这是一个 XY 问题 - 这是背景:我想返回某种元数据以防 json 解析错误。如果我尝试发布一个新人但 json 错误,我想回复如下内容:
postgresql - Yesod/Persistent 不关闭数据库连接
我有一个使用 Yesod 和 Persistent 的网络应用程序。我正在使用默认的脚手架Foundation.hs
和Application.hs
. 我编写了一个处理本地 JSON 文件的函数,然后为 JSON 文件中的每个项目将一行插入到几个表中。所以它将总共执行 1000 多次插入。
在 GHCI 中运行该函数,它成功保存了一些行,然后出现以下错误:
libpq: failed (FATAL: sorry, too many clients already)
使用 postgres 查询:
select *
from pg_stat_activity
where datname = 'mydb-name'
我可以看到我的应用程序创建了 100 个空闲连接并且没有关闭。然后我需要终止这些连接才能做任何事情。
INSERT
当查询完成时,不应该持久关闭这些连接吗?我需要做些什么不同的事情?
haskell - Select list from list of IDs using persistent
In my application I need to be able to write a query that takes a list of IDs and returns a list of each of those records.
From what I can tell from the yesod persistent page I could do something like
Which I believe would return a list containing user 1, 2 and 3 but I can't work out how I would write this query when I don't know the list or how long it will be at compile time.
How would I go about selecting a list of records using a list of IDs in Haskell persistent.
sqlite - Yesod 具有数据库访问权限的硬编码身份验证
我实现了一个类似于此处描述的 Yesod 身份验证系统,通过查找硬编码在列表中的用户名和密码可以正常工作。
我现在尝试通过修改lookupUser和validPassword函数来修改此行为以在数据库中查找用户名和密码。对于初学者,只有lookupUser:
但是我收到以下我不明白的错误:
runSqlite和selectFirst的签名:
haskell - 持久更新插入不编译
我正在尝试使用 PostgreSQL 在 Persistent 中做一些看起来应该很简单的事情:给定一个Attendance
记录列表,用相同的唯一键覆盖任何现有行,或者如果它们不存在则插入。以下是类型:
我没有钥匙,所以我不能使用repsert
,但我认为upsert
这是我需要的。对我来说,文档upsert
看起来有点模糊:如果记录存在并且我将更新留空,我知道它将保留实体原样。但这并不等同于 的行为repsert
,正如所声称的那样,是吗?它也没有说明不存在唯一性约束时会发生什么。
我尝试的是
但这会导致我不太了解的错误:
知道是什么导致了这个错误吗?upsertBy
也是一样的。我已经在同一个文件中导入了 Esqueleto,但是hiding ((=.))
,所以它应该是纯持久的。
haskell - 从实体记录中获取 id
我有一个Entity record
,具体来说Entity User
,我需要将用户在数据库中的 ID 提取为Int
.
从阅读文档来看,这里似乎entityKey
很有用,但我不太确定我将如何Int
摆脱困境。
haskell - 如何将持久模型中的字段用作路由文件中的路径片段?
我有一个像这样的持久模型:
我想在我的 Yesodroutes
文件中使用组织名称,如下所示:
使用OrganizationName
or UniqueOrganizationName
there 给我这个错误:
我可以使用新类型作为解决方法,只是想知道这是否有必要。
我想缺少PathPiece
实例是一个问题,但如果只是这样,那么错误将是No instance for (PathPiece ...)
.
使用OrganizationName
或UniqueOrganizationName
将没问题。
haskell - 如何存储任何一个(密钥 a)(密钥 b)?
我有以下模型:
在Sharing
实体中,我想存储UserId
或GroupId
区分它们。简单地使用Either
不起作用:
- 不在范围内:类型构造函数或类“UserId”
- 不在范围内:类型构造函数或类“GroupId”
添加新的 sum 类型也不起作用:
- 不在范围内:类型构造函数或类“SharingIdType”
移动SharingIdType
到另一个模块是不可能的,因为它使用UserId
和GroupId
类型。我看到的唯一方法是为每种共享类型创建一个实体,例如UserSharing
/ GroupSharing
。
除此之外,如何解决这个问题?