【问题标题】:How to store an Enum ADT in Persistent如何将枚举 ADT 存储在 Persistent 中
【发布时间】:2014-09-09 09:02:44
【问题描述】:

如何将枚举存储在 Persistent 中?

假设你有一个 数据状态 = 就绪 |未准备好 |错误

如何将其存储在持久性数据库中?

【问题讨论】:

    标签: haskell yesod persistent


    【解决方案1】:

    使用derivePersistentField 非常简单,如Yesod docs 所示。对于你的情况,你可以做这样的事情

    -- State.hs
    {-# LANGUAGE TemplateHaskell #-}
    module State where
    
    import Database.Persist.TH
    import Prelude
    
    data State = Ready | Unready | Error
        deriving (Show, Read, Eq)
    derivePersistField "State"
    

    然后您可以将其导入并在您的模型中使用:

    -- Model.hs
    import State
    
    SomethingSomething
        state State
    

    【讨论】:

    • 从 git 中提取的重要说明 "注意:如果您创建了一个新模块,请确保将其添加到 Cabal 文件的暴露模块部分。"
    • 另外注意:由于“阶段限制”,这个定义必须在一个独立于模型的模块中。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-12
      • 2010-09-20
      • 2011-03-28
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2019-10-02
      相关资源
      最近更新 更多