module Database.Redis.Namespace
(
R.Connection
, R.ConnectInfo(..)
, R.PortID(..)
, R.connect
, R.defaultConnectInfo
, RedisNS
, runRedisNS
, ttl
, setnx
, pttl
, zrank
, zremrangebyscore
, hkeys
, rpushx
, debugObject
, hlen
, rpoplpush
, brpop
, zincrby
, hgetall
, hmset
, sinter
, pfadd
, zremrangebyrank
, sadd
, lindex
, lpush
, smove
, pfcount
, zscore
, hdel
, incrbyfloat
, setbit
, incrby
, smembers
, sunion
, hvals
, lpop
, expire
, mget
, pexpire
, renamenx
, pfmerge
, lrem
, sdiff
, get
, getrange
, sdiffstore
, zcount
, getset
, dump
, keys
, rpush
, hsetnx
, mset
, setex
, psetex
, scard
, sunionstore
, persist
, strlen
, lpushx
, hset
, brpoplpush
, zrevrank
, setrange
, del
, hincrbyfloat
, hincrby
, rpop
, rename
, zrem
, hexists
, decr
, hmget
, lrange
, decrby
, llen
, append
, incr
, hget
, pexpireat
, ltrim
, zcard
, lset
, expireat
, move
, getbit
, msetnx
, blpop
, srem
, sismember
, set
) where
import qualified Control.Arrow
import Control.Monad.Reader (ReaderT, runReaderT, ask, lift)
import Data.ByteString (ByteString)
import Data.Monoid ((<>))
import Database.Redis (RedisCtx, Status, runRedis)
import qualified Database.Redis as R
type RedisNS m f a = ReaderT ByteString m (f a)
runRedisNS :: R.Connection -> ByteString -> ReaderT ByteString R.Redis a -> IO a
runRedisNS conn ns = runRedis conn . flip runReaderT ns
join :: ByteString -> ByteString -> ByteString
join pre post = pre <> ":" <> post
prefix :: Monad m => ByteString -> ReaderT ByteString m ByteString
prefix post = join <$> ask <*> pure post
prefix1 :: Monad m
=> (ByteString -> m b)
-> ByteString -> ReaderT ByteString m b
prefix1 f key = prefix key >>= \k -> lift $ f k
prefix2 :: Monad m
=> (ByteString -> a -> m r)
-> ByteString -> a -> ReaderT ByteString m r
prefix2 f key a = prefix key >>= \k -> lift $ f k a
prefix3 :: Monad m
=> (ByteString -> a -> b -> m r)
-> ByteString -> a -> b -> ReaderT ByteString m r
prefix3 f key a b = prefix key >>= \k -> lift $ f k a b
prefixM1 :: Monad m
=> ([ByteString] -> m r)
-> [ByteString] -> ReaderT ByteString m r
prefixM1 f ks = mapM prefix ks >>= \k -> lift $ f k
prefixM2 :: Monad m
=> ([ByteString] -> a -> m r)
-> [ByteString] -> a -> ReaderT ByteString m r
prefixM2 f ks a = mapM prefix ks >>= \k -> lift $ f k a
ttl
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
ttl = prefix1 R.ttl
setnx
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Bool
setnx = prefix2 R.setnx
pttl
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
pttl = prefix1 R.pttl
zrank
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f (Maybe Integer)
zrank = prefix2 R.zrank
zremrangebyscore
:: (RedisCtx m f)
=> ByteString
-> Double
-> Double
-> RedisNS m f Integer
zremrangebyscore = prefix3 R.zremrangebyscore
hkeys
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f [ByteString]
hkeys = prefix1 R.hkeys
rpushx
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Integer
rpushx = prefix2 R.rpushx
debugObject
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f ByteString
debugObject = prefix1 R.debugObject
hlen
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
hlen = prefix1 R.hlen
rpoplpush
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f (Maybe ByteString)
rpoplpush = prefix2 R.rpoplpush
brpop
:: (RedisCtx m f)
=> [ByteString]
-> Integer
-> RedisNS m f (Maybe (ByteString,ByteString))
brpop = prefixM2 R.brpop
zincrby
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Double
zincrby = prefix3 R.zincrby
hgetall
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f [(ByteString,ByteString)]
hgetall = prefix1 R.hgetall
hmset
:: (RedisCtx m f)
=> ByteString
-> [(ByteString,ByteString)]
-> RedisNS m f Status
hmset = prefix2 R.hmset
sinter
:: (RedisCtx m f)
=> [ByteString]
-> RedisNS m f [ByteString]
sinter = prefixM1 R.sinter
pfadd
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
pfadd = prefix2 R.pfadd
zremrangebyrank
:: (RedisCtx m f)
=> ByteString
-> Integer
-> Integer
-> RedisNS m f Integer
zremrangebyrank = prefix3 R.zremrangebyrank
sadd
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
sadd = prefix2 R.sadd
lindex
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f (Maybe ByteString)
lindex = prefix2 R.lindex
lpush
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
lpush = prefix2 R.lpush
smove
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> ByteString
-> RedisNS m f Bool
smove = prefix3 R.smove
zscore
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f (Maybe Double)
zscore = prefix2 R.zscore
pfcount
:: (RedisCtx m f)
=> [ByteString]
-> RedisNS m f Integer
pfcount = prefixM1 R.pfcount
hdel
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
hdel = prefix2 R.hdel
incrbyfloat
:: (RedisCtx m f)
=> ByteString
-> Double
-> RedisNS m f Double
incrbyfloat = prefix2 R.incrbyfloat
setbit
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Integer
setbit = prefix3 R.setbit
incrby
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Integer
incrby = prefix2 R.incrby
smembers
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f [ByteString]
smembers = prefix1 R.smembers
sunion
:: (RedisCtx m f)
=> [ByteString]
-> RedisNS m f [ByteString]
sunion = prefixM1 R.sunion
hvals
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f [ByteString]
hvals = prefix1 R.hvals
lpop
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f (Maybe ByteString)
lpop = prefix1 R.lpop
expire
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Bool
expire = prefix2 R.expire
mget
:: (RedisCtx m f)
=> [ByteString]
-> RedisNS m f [Maybe ByteString]
mget = prefixM1 R.mget
pexpire
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Bool
pexpire = prefix2 R.pexpire
renamenx
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Bool
renamenx k nk = do
k' <- prefix k
nk' <- prefix nk
lift $ R.renamenx k' nk'
pfmerge
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f ByteString
pfmerge src dst = do
src' <- prefix src
dst' <- mapM prefix dst
lift $ R.pfmerge src' dst'
lrem
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Integer
lrem = prefix3 R.lrem
sdiff
:: (RedisCtx m f)
=> [ByteString]
-> RedisNS m f [ByteString]
sdiff = prefixM1 R.sdiff
get
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f (Maybe ByteString)
get = prefix1 R.get
getrange
:: (RedisCtx m f)
=> ByteString
-> Integer
-> Integer
-> RedisNS m f ByteString
getrange = prefix3 R.getrange
sdiffstore
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
sdiffstore = prefix2 R.sdiffstore
zcount
:: (RedisCtx m f)
=> ByteString
-> Double
-> Double
-> RedisNS m f Integer
zcount = prefix3 R.zcount
getset
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f (Maybe ByteString)
getset = prefix2 R.getset
dump
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f ByteString
dump = prefix1 R.dump
keys
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f [ByteString]
keys = prefix1 R.keys
rpush
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
rpush = prefix2 R.rpush
hsetnx
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> ByteString
-> RedisNS m f Bool
hsetnx = prefix3 R.hsetnx
mset
:: (RedisCtx m f)
=> [(ByteString,ByteString)]
-> RedisNS m f Status
mset kv = lift . R.mset . flip map kv . Control.Arrow.first . join =<< ask
setex
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Status
setex = prefix3 R.setex
psetex
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Status
psetex = prefix3 R.psetex
scard
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
scard = prefix1 R.scard
sunionstore
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
sunionstore dst key = do
dst' <- prefix dst
key' <- mapM prefix key
lift $ R.sunionstore dst' key'
persist
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Bool
persist = prefix1 R.persist
strlen
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
strlen = prefix1 R.strlen
lpushx
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Integer
lpushx = prefix2 R.lpushx
hset
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> ByteString
-> RedisNS m f Bool
hset = prefix3 R.hset
brpoplpush
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> Integer
-> RedisNS m f (Maybe ByteString)
brpoplpush src dst timeout = do
src' <- prefix src
dst' <- prefix dst
lift $ R.brpoplpush src' dst' timeout
zrevrank
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f (Maybe Integer)
zrevrank = prefix2 R.zrevrank
setrange
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Integer
setrange = prefix3 R.setrange
del
:: (RedisCtx m f)
=> [ByteString]
-> RedisNS m f Integer
del = prefixM1 R.del
hincrbyfloat
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> Double
-> RedisNS m f Double
hincrbyfloat = prefix3 R.hincrbyfloat
hincrby
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> Integer
-> RedisNS m f Integer
hincrby = prefix3 R.hincrby
rpop
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f (Maybe ByteString)
rpop = prefix1 R.rpop
rename
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Status
rename k nk = do
k' <- prefix k
nk' <- prefix nk
lift $ R.rename k' nk'
zrem
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
zrem = prefix2 R.zrem
hexists
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Bool
hexists = prefix2 R.hexists
decr
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
decr = prefix1 R.decr
hmget
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f [Maybe ByteString]
hmget = prefix2 R.hmget
lrange
:: (RedisCtx m f)
=> ByteString
-> Integer
-> Integer
-> RedisNS m f [ByteString]
lrange = prefix3 R.lrange
decrby
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Integer
decrby = prefix2 R.decrby
llen
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
llen = prefix1 R.llen
append
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Integer
append = prefix2 R.append
incr
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
incr = prefix1 R.incr
hget
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f (Maybe ByteString)
hget = prefix2 R.hget
pexpireat
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Bool
pexpireat = prefix2 R.pexpireat
ltrim
:: (RedisCtx m f)
=> ByteString
-> Integer
-> Integer
-> RedisNS m f Status
ltrim = prefix3 R.ltrim
zcard
:: (RedisCtx m f)
=> ByteString
-> RedisNS m f Integer
zcard = prefix1 R.zcard
lset
:: (RedisCtx m f)
=> ByteString
-> Integer
-> ByteString
-> RedisNS m f Status
lset = prefix3 R.lset
expireat
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Bool
expireat = prefix2 R.expireat
move
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Bool
move = prefix2 R.move
getbit
:: (RedisCtx m f)
=> ByteString
-> Integer
-> RedisNS m f Integer
getbit = prefix2 R.getbit
msetnx
:: (RedisCtx m f)
=> [(ByteString,ByteString)]
-> RedisNS m f Bool
msetnx kv = lift . R.msetnx . flip map kv . Control.Arrow.first . join =<< ask
blpop
:: (RedisCtx m f)
=> [ByteString]
-> Integer
-> RedisNS m f (Maybe (ByteString,ByteString))
blpop = prefixM2 R.blpop
srem
:: (RedisCtx m f)
=> ByteString
-> [ByteString]
-> RedisNS m f Integer
srem = prefix2 R.srem
sismember
:: (RedisCtx m f)
=> ByteString
-> ByteString
-> RedisNS m f Bool
sismember = prefix2 R.sismember
set :: RedisCtx m f => ByteString -> ByteString -> RedisNS m f Status
set = prefix2 R.set