module Database.Redis.General
( RedisReply(..)
, keyExists
, keyExistsB
, keyDelete
, keyDeleteB
, keyType
, keyTypeB
, keys
, keysB
, keyRandom
, keyRename
, select
, toUTF8
, ping
, unwrapReply
, unwrapReplyB
) where
import Data.Maybe
import System.IO
import Database.Redis.Internal
keyExists :: Handle
-> String
-> IO (Maybe RedisReply)
keyExists h key = request h $ map toUTF8 ["EXISTS", key]
keyExistsB :: Handle
-> ByteString
-> IO (Maybe RedisReply)
keyExistsB h key = request h [toUTF8 "EXISTS", key]
keyDelete :: Handle
-> [String]
-> IO (Maybe RedisReply)
keyDelete h ks = request h $ map toUTF8 ("DEL":ks)
keyDeleteB :: Handle
-> [ByteString]
-> IO (Maybe RedisReply)
keyDeleteB h ks = request h ((toUTF8 "DEL"):ks)
keyType :: Handle
-> String
-> IO (Maybe RedisReply)
keyType h key = request h $ map toUTF8 ["TYPE", key]
keyTypeB :: Handle
-> ByteString
-> IO (Maybe RedisReply)
keyTypeB h key = request h [toUTF8 "TYPE", key]
keys :: Handle
-> String
-> IO (Maybe RedisReply)
keys h pattern = request h $ map toUTF8 ["KEYS", pattern]
keysB :: Handle
-> ByteString
-> IO (Maybe RedisReply)
keysB h pattern = request h [toUTF8 "KEYS", pattern]
keyRandom :: Handle
-> IO (Maybe RedisReply)
keyRandom h = request h [toUTF8 "RANDOMKEY"]
keyRename :: Handle
-> String
-> String
-> IO (Maybe RedisReply)
keyRename h old new = request h $ map toUTF8 ["RENAME", old, new]
select :: Handle
-> Int
-> IO (Maybe RedisReply)
select h i = request h $ map toUTF8 ["SELECT", show i]
ping :: Handle
-> IO (Maybe RedisReply)
ping h = request h $ map toUTF8 ["PING"]
unwrapReply :: Maybe RedisReply -> String
unwrapReply reply =
case reply of
Just (RedisBulk [Just (RedisSingle x)]) -> fromUTF8 x
Just (RedisSingle x) -> fromUTF8 x
Just (RedisError x) -> fromUTF8 x
Just (RedisInteger x) -> show x
Nothing -> "Nada"
_ -> "Not yet Supported"
unwrapReplyB :: Maybe RedisReply -> [ByteString]
unwrapReplyB reply =
case reply of
Just (RedisSingle x) -> [x]
Just (RedisError x) -> [x]
Just (RedisInteger x) -> [toUTF8 $ show x]
Just (RedisBulk x) -> catMaybes $ map bulks x
Nothing -> [toUTF8 "Nada"]
where
bulks rs = case rs of
Just (RedisBulk [Just (RedisSingle x)]) -> Just x
Nothing -> Nothing
_ -> Nothing