2017-05-08 71 views
1

我有一个Haskell Status类型:映射哈斯克尔类型Postgres数据库持久性

data Status = FirstViewed | Reviewed | Learned 

我怎么能这个数据映射到持久Postgres数据库?

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| 
Vocabulary sql=vocabulary 
    word Text 
    date UTCTime 
    status Status 
    deriving Show 
|] 
+0

你可以使用['derivePersistField'](https://hackage.haskell.org/package/persistent-template-2.5.2/docs/Database-Persist-TH.html#v:derivePersistField)模板Haskell函数为持久化派生必要的实例来序列化和反序列化它。 –

回答

1

@Alexis国王说了什么,是正确的。您必须执行 derivePersistField "Status"才能创建适当的实例 PersistField实例。

但你也必须得到显示和阅读您的 和类型的实例:

data Status = FirstViewed | Reviewed | Learned deriving (Show, Read, Eq) 

显示和阅读需要实例,因为derivePersistField 用它来执行从检索存储在适当的时候转换和 数据库。由于舞台限制,总和类型必须在单独的文件中定义为 。你也可以 想看看 peristent的章节,这个 是有据可查的。