映射哈斯克尔类型Postgres数据库持久性
问题描述:
我有一个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
|]
答
@Alexis国王说了什么,是正确的。您必须执行 derivePersistField "Status"
才能创建适当的实例 PersistField
实例。
但你也必须得到显示和阅读您的 和类型的实例:
data Status = FirstViewed | Reviewed | Learned deriving (Show, Read, Eq)
显示和阅读需要实例,因为derivePersistField
用它来执行从检索存储在适当的时候转换和 数据库。由于舞台限制,总和类型必须在单独的文件中定义为 。你也可以 想看看 peristent的章节,这个 是有据可查的。
你可以使用['derivePersistField'](https://hackage.haskell.org/package/persistent-template-2.5.2/docs/Database-Persist-TH.html#v:derivePersistField)模板Haskell函数为持久化派生必要的实例来序列化和反序列化它。 –