Yesod Persist从JSON创建String键

时间:2018-01-17 10:40:13

标签: haskell yesod persist

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

Page json
  uuid Text
  title Text
  UniquePageUuid uuid
  Primary uuid

Link
  uuid Text
  href Text
  pageId PageId Maybe
  Primary uuid

我想构建一个JSON端点来更新Link模型中的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创建DB Keys的代码,但我不知道如何从Text值创建它们。

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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