persistent-zookeeper-0.0.1: Database/Persist/Zookeeper/PathPiece.hs
{-# LANGUAGE FlexibleContexts, UndecidableInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Database.Persist.Zookeeper.PathPiece
where
import Database.Persist
import Database.Persist.Zookeeper.Store
import Web.PathPieces (PathPiece (..))
import qualified Data.ByteString.Char8 as B
import qualified Data.Text as T
import qualified Data.ByteString.Base64.URL as B64
-- | ToPathPiece is used to convert a key to/from text
instance PathPiece (KeyBackend ZookeeperBackend entity) where
fromPathPiece txt =
case B64.decode $ B.pack $ T.unpack txt of
Right v -> Just (Key (PersistText (T.pack $ B.unpack v)))
Left _ -> Nothing
toPathPiece (Key (PersistText txt)) = T.pack $ B.unpack $ B64.encode $ B.pack $ T.unpack txt
toPathPiece (Key _) = error "Wrong key for pathpiece "