gpt4 book ai didi

haskell - Yesod:使用自定义主键查询 `persist` 数据库

转载 作者:行者123 更新时间:2023-12-04 03:15:40 25 4
gpt4 key购买 nike

假设我有一个带有 persist 的 SQL 表,并且我有一个自定义的 Text 作为主键而不是自动递增的 Int64 键。

例如,我的数据库定义是这样的:

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
TorrentD
infoHash Text
ipAddr [Text]
Primary infoHash
deriving Show
|]

假设我有一个普通的 Text 值,在数据库中查询主键与我的 Text 值匹配的行的惯用方法是什么?

runDB $ get $ toSqlKey ("test"::Text) 不起作用,因为 toSqlKey 不支持自定义主键,因此需要一个 Int64.

手动创建 key 并运行 runDB $ get $ Key $ PersistText ("test"::Text) 不起作用,因为它给我一个关于 Key 的错误> 不在范围内(尽管我的导入中确实有 Database.Persist.Class)。

最佳答案

我找到了(那个?)(一个?)答案。它不是很漂亮,但是:

get (TorrentDKey {unTorrentDKey = torrentPInfoHash torrent})

有效。

unTorrentDKey 是在模板 haskell 中生成的东西。

看来我得加胡椒粉了

let primaryKey = TorrentDKey {unTorrentDKey = torrentPInfoHash torrent}

在我的代码中。

关于haskell - Yesod:使用自定义主键查询 `persist` 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com