{-# 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"