persistent-cereal (empty) → 0.1.0
raw patch · 5 files changed
+47/−0 lines, 5 filesdep +basedep +cerealdep +persistentsetup-changed
Dependencies added: base, cereal, persistent, text
Files
- Database/Persist/Cereal.hs +13/−0
- Database/Persist/Cereal/Instances.hs +11/−0
- LICENSE +1/−0
- Setup.hs +2/−0
- persistent-cereal.cabal +20/−0
+ Database/Persist/Cereal.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE OverloadedStrings #-}+module Database.Persist.Cereal where++import Data.Serialize (Serialize, encode, decode)+import qualified Data.Text as T+import Database.Persist++toPersistValue :: Serialize a => a -> PersistValue+toPersistValue = PersistByteString . encode++fromPersistValue :: Serialize a => PersistValue -> Either T.Text a+fromPersistValue (PersistByteString bs) = either (Left . T.pack) Right (decode bs)+fromPersistValue _ = Left "Serializable values must be converted from PersistByteString"
+ Database/Persist/Cereal/Instances.hs view
@@ -0,0 +1,11 @@+{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}+-- | Warning: this module uses @UndecidableInstances@+module Database.Persist.Cereal.Instances where++import Data.Serialize (Serialize)+import Database.Persist+import Database.Persist.Cereal as C++instance (Serialize a) => PersistField a where+ toPersistValue = C.toPersistValue+ fromPersistValue = C.fromPersistValue
+ LICENSE view
@@ -0,0 +1,1 @@+Public domain
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ persistent-cereal.cabal view
@@ -0,0 +1,20 @@+name: persistent-cereal+version: 0.1.0+synopsis: Helper functions for writing Persistent instances+description: Minor boilerplate for writing Persistance instances for values that are serializable with the 'cereal' library.+homepage: http://hub.darcs.net/co-dan/persistent-cereal+license: PublicDomain+license-file: LICENSE+author: Dan Frumin+maintainer: difrumin@gmail.com+category: Database+build-type: Simple+cabal-version: >=1.8++library+ exposed-modules: Database.Persist.Cereal,+ Database.Persist.Cereal.Instances+ build-depends: base >= 4.5 && <= 4.8,+ cereal >= 0.1 && < 0.4,+ persistent >= 1.2.3.2 && < 1.4,+ text >= 0.8