module Database.Redis.General
( RedisReply(..)
, keyExists, keyExistsB
, keyDelete, keyDeleteB
, keyType, keyTypeB
, keys, keysB
, keyRandom
, keyRename
, keyRenameNX
, databaseSize
, keyTimeToLive
, keyExpire
, keyExpireAt
, keyPersist
, keyMove
, flushDB
, flushAll
, select
, toUTF8
, ping
, unwrapReply
) 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]
keyRenameNX :: Handle
-> String
-> String
-> IO (Maybe RedisReply)
keyRenameNX h old new = request h $ map toUTF8 ["RENAMENX", old, new]
databaseSize :: Handle
-> IO (Maybe RedisReply)
databaseSize h = request h [toUTF8 "SELECT"]
keyExpire :: Handle
-> String
-> Int
-> IO (Maybe RedisReply)
keyExpire h key i = request h $ map toUTF8 ["EXPIRE", key, show i]
keyExpireAt :: Handle
-> String
-> Int
-> IO (Maybe RedisReply)
keyExpireAt h key i = request h $ map toUTF8 ["EXPIREAT", key, show i]
keyPersist :: Handle
-> String
-> IO (Maybe RedisReply)
keyPersist h key = request h $ map toUTF8 ["PERSIST", key]
keyTimeToLive :: Handle
-> String
-> IO (Maybe RedisReply)
keyTimeToLive h key = request h $ map toUTF8 ["PERSIST", key]
select :: Handle
-> Int
-> IO (Maybe RedisReply)
select h i = request h $ map toUTF8 ["SELECT", show i]
keyMove :: Handle
-> String
-> Int
-> IO (Maybe RedisReply)
keyMove h key i = request h $ map toUTF8 ["SELECT", key, show i]
flushDB :: Handle
-> IO (Maybe RedisReply)
flushDB h = request h [toUTF8 "FLUSHDB"]
flushAll :: Handle
-> IO (Maybe RedisReply)
flushAll h = request h [toUTF8 "FLUSHALL"]
ping :: Handle
-> IO (Maybe RedisReply)
ping h = request h $ map toUTF8 ["PING"]
unwrapReply :: Maybe RedisReply -> [String]
unwrapReply reply =
case reply of
Just (RedisSingle x) -> map fromUTF8 [x]
Just (RedisError x) -> map fromUTF8 [x]
Just (RedisInteger x) -> [show x]
Just (RedisBulk x) -> map fromUTF8 $ catMaybes $ map bulks x
Nothing -> ["Nada"]
where
bulks rs = case rs of
Just (RedisBulk [Just (RedisSingle x)]) -> Just x
Nothing -> Nothing