2017-05-08 72 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的章節,這個 是有據可查的。