module Database.Redis.Builder (
fromReply,
) where
import Blaze.ByteString.Builder
import Blaze.Text
import qualified Data.ByteString as S
import Data.Monoid
import Database.Redis.Types
fromReply :: Reply -> Builder
fromReply rep = case rep of
StatusReply stat ->
fromByteString "+" <> fromByteString stat <> crlf
ErrorReply err ->
fromByteString "-" <> fromByteString err <> crlf
IntReply n ->
fromByteString ":" <> integral n <> crlf
BulkReply mb ->
fromBulkReply mb
MultiBulkReply Nothing ->
fromByteString "*-1" <> crlf
MultiBulkReply (Just bss) ->
fromByteString "*" <> integral (length bss) <> crlf <>
mconcat (map fromBulkReply bss)
fromBulkReply :: Maybe S.ByteString -> Builder
fromBulkReply Nothing =
fromByteString "$-1" <> crlf
fromBulkReply (Just bs) =
fromByteString "$" <> integral (S.length bs) <> crlf <>
fromByteString bs <> crlf
crlf :: Builder
crlf = fromByteString "\r\n"