Yesod Persist 从 JSON 创建字符串密钥



我有两个非常简单的模型定义:

Page json
  uuid Text
  title Text
  UniquePageUuid uuid
  Primary uuid
Link
  uuid Text
  href Text
  pageId PageId Maybe
  Primary uuid

我想构建一个 JSON 端点来更新链接模型中的 pageId:

data ApiLink { linkPageId :: PageId } deriving (Generic)
instance FromJSON ApiLink

我的处理程序看起来像这样:

patchApiLinkR :: LinkId -> Handler Value
patchApiLinkR linkId = do
  jsonData <- requireJsonBody :: Handler ApiLink
  link <- runDB $ update linkId [LinkPageId =. (linkPageId jsonData)]
  returnJson link

不幸的是,我不知道如何完成这项工作,因为ApiLink中的linkPageId具有PageId的类型。我已经看到了一些为 Int64 创建数据库密钥的代码,但我不知道如何从文本值创建它们。

多谢!

您必须将数据库查询稍微更改为如下所示:

link <- runDB $ update linkId [LinkPageId =. (Just $ linkPageId jsonData)]

最新更新