使用 Persistent 将 Haskell 类型映射到 Postgres 数据库

Mapping Haskell type to Postgres database with Persistent

我有一个 Haskell Status 类型:

data Status = FirstViewed | Reviewed | Learned

如何将此数据映射到 Persistent Postgres 数据库?

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

@Alexis king 所说的是正确的。你必须要做 derivePersistField "Status" 创建合适的 PersistField 个实例。

但是您还必须派生您的 Show 和 Read 实例 总和类型:

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

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