module Database.Edis.Command.ZSet where
import Database.Edis.Type
import Database.Edis.Helper
import Data.Proxy (Proxy)
import Data.Serialize (Serialize, encode)
import Data.Type.Bool
import Database.Redis as Redis hiding (decode)
import GHC.TypeLits
zadd :: (KnownSymbol s, Serialize x, ZSetOrNX xs s)
=> Proxy s -> Double -> x
-> Edis xs (If (Member xs s) xs (Set xs s (ZSetOf x))) (Either Reply Integer)
zadd key score val = Edis $ Redis.zadd (encodeKey key) [(score, encode val)]
zcard :: (KnownSymbol s, SetOrNX xs s)
=> Proxy s
-> Edis xs xs (Either Reply Integer)
zcard key = Edis $ Redis.zcard (encodeKey key)
zcount :: (KnownSymbol s, SetOrNX xs s)
=> Proxy s -> Double -> Double
-> Edis xs xs (Either Reply Integer)
zcount key min' max' = Edis $ Redis.zcount (encodeKey key) min' max'
zincrby :: (KnownSymbol s, Serialize x, ZSetOrNX xs s)
=> Proxy s -> Integer -> x
-> Edis xs (If (Member xs s) xs (Set xs s (ZSetOf x))) (Either Reply Double)
zincrby key score val = Edis $ Redis.zincrby (encodeKey key) score (encode val)
zrange :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Integer -> Integer
-> Edis xs xs (Either Reply [x])
zrange key from to = Edis $ Redis.zrange (encodeKey key) from to >>= decodeAsList
zrangeWithscores :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Integer -> Integer
-> Edis xs xs (Either Reply [(x, Double)])
zrangeWithscores key from to =
Edis $ Redis.zrangeWithscores (encodeKey key) from to >>= decodeAsListWithScores
zrangebyscore :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double
-> Edis xs xs (Either Reply [x])
zrangebyscore key min' max' =
Edis $ Redis.zrangebyscore (encodeKey key) min' max' >>= decodeAsList
zrangebyscoreWithscores :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double
-> Edis xs xs (Either Reply [(x, Double)])
zrangebyscoreWithscores key min' max' =
Edis $ Redis.zrangebyscoreWithscores (encodeKey key) min' max' >>= decodeAsListWithScores
zrangebyscoreLimit :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double -> Integer -> Integer
-> Edis xs xs (Either Reply [x])
zrangebyscoreLimit key min' max' offset count =
Edis $ Redis.zrangebyscoreLimit (encodeKey key) min' max' offset count >>= decodeAsList
zrangebyscoreWithscoresLimit :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double -> Integer -> Integer
-> Edis xs xs (Either Reply [(x, Double)])
zrangebyscoreWithscoresLimit key min' max' offset count =
Edis $ Redis.zrangebyscoreWithscoresLimit (encodeKey key) min' max' offset count >>= decodeAsListWithScores
zrank :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> x
-> Edis xs xs (Either Reply (Maybe Integer))
zrank key val = Edis $ Redis.zrank (encodeKey key) (encode val)
zremrangebyrank :: (KnownSymbol s, ZSetOrNX xs s)
=> Proxy s -> Integer -> Integer
-> Edis xs xs (Either Reply Integer)
zremrangebyrank key from to = Edis $ Redis.zremrangebyrank (encodeKey key) from to
zremrangebyscore :: (KnownSymbol s, ZSetOrNX xs s)
=> Proxy s -> Double -> Double
-> Edis xs xs (Either Reply Integer)
zremrangebyscore key min' max' = Edis $ Redis.zremrangebyscore (encodeKey key) min' max'
zrevrange :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Integer -> Integer
-> Edis xs xs (Either Reply [x])
zrevrange key from to = Edis $ Redis.zrevrange (encodeKey key) from to >>= decodeAsList
zrevrangeWithscores :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Integer -> Integer
-> Edis xs xs (Either Reply [(x, Double)])
zrevrangeWithscores key from to =
Edis $ Redis.zrevrangeWithscores (encodeKey key) from to >>= decodeAsListWithScores
zrevrangebyscore :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double
-> Edis xs xs (Either Reply [x])
zrevrangebyscore key min' max' =
Edis $ Redis.zrevrangebyscore (encodeKey key) min' max' >>= decodeAsList
zrevrangebyscoreWithscores :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double
-> Edis xs xs (Either Reply [(x, Double)])
zrevrangebyscoreWithscores key min' max' =
Edis $ Redis.zrevrangebyscoreWithscores (encodeKey key) min' max' >>= decodeAsListWithScores
zrevrangebyscoreLimit :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double -> Integer -> Integer
-> Edis xs xs (Either Reply [x])
zrevrangebyscoreLimit key min' max' offset count =
Edis $ Redis.zrevrangebyscoreLimit (encodeKey key) min' max' offset count >>= decodeAsList
zrevrangebyscoreWithscoresLimit :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> Double -> Double -> Integer -> Integer
-> Edis xs xs (Either Reply [(x, Double)])
zrevrangebyscoreWithscoresLimit key min' max' offset count =
Edis $ Redis.zrevrangebyscoreWithscoresLimit (encodeKey key) min' max' offset count >>= decodeAsListWithScores
zrevrank :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> x
-> Edis xs xs (Either Reply (Maybe Integer))
zrevrank key val = Edis $ Redis.zrevrank (encodeKey key) (encode val)
zscore :: (KnownSymbol s, Serialize x
, 'Just (ZSetOf x) ~ Get xs s)
=> Proxy s -> x
-> Edis xs xs (Either Reply (Maybe Double))
zscore key val = Edis $ Redis.zscore (encodeKey key) (encode val)