module Database.PostgreSQL.Store.Utilities (
showByteString,
readByteString,
buildByteString,
liftByteString
) where
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import qualified Data.ByteString as B
import qualified Blaze.ByteString.Builder as B
import qualified Blaze.ByteString.Builder.Char.Utf8 as B
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Text.Read (readMaybe)
showByteString :: (Show a) => a -> B.ByteString
showByteString =
B.toByteString . B.fromString . show
readByteString :: (Read a) => B.ByteString -> Maybe a
readByteString =
readMaybe . T.unpack . T.decodeUtf8
buildByteString :: String -> B.ByteString
buildByteString =
B.toByteString . B.fromString
liftByteString :: B.ByteString -> Q Exp
liftByteString bs =
[e| B.pack $(lift (B.unpack bs)) |]