2017-05-08 4 views
1

Ich habe einen Haskell Status Typ:Mapping Haskell Typ Postgres-Datenbank mit Persistent

data Status = FirstViewed | Reviewed | Learned 

Wie kann ich diese Daten zu Persistent Postgres-Datenbank abzubilden?

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

Sie könnten die Template Haskell-Funktion ['direPersistField'] (https://hackage.haskell.org/package/persistent-template-2.5.2/docs/Database-Persist-TH.html#v:derivePersistField) verwenden um die notwendigen Instanzen für "persistent" zu serialisieren und zu entserialisieren. –

Antwort

1

Was @Alexis König gesagt hat, ist richtig. Sie müssen derivePersistField "Status" tun, um entsprechende PersistField Instanzen zu erstellen.

Aber Sie müssen auch die Fragen ableiten und Instanzen Ihrer Summe Typ Lesen:

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

anzeigen und lesen Instanzen benötigt werden, weil derivePersistField verwendet es entsprechende Umwandlung durchzuführen, wenn die Speicherung und aus dem Abrufen Datenbank. Auch der Summentyp muss in einer separaten Datei wegen der Stage Restriction definiert werden. Sie können auch auf das Kapitel peristent schauen, wo diese gut dokumentiert ist.