hlrdb-core 0.1.1.1 → 0.1.2.0
raw patch · 3 files changed
+28/−1 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ HLRDB.Core: zrangebyscore :: MonadRedis m => RedisSSet a b -> a -> Maybe Double -> Maybe Double -> Maybe Integer -> Maybe Integer -> m [(b, Double)]
+ HLRDB.Structures.SSet: zrangebyscore :: MonadRedis m => RedisSSet a b -> a -> Maybe Double -> Maybe Double -> Maybe Integer -> Maybe Integer -> m [(b, Double)]
Files
- hlrdb-core.cabal +1/−1
- src/HLRDB/Core.hs +2/−0
- src/HLRDB/Structures/SSet.hs +25/−0
hlrdb-core.cabal view
@@ -1,5 +1,5 @@ name: hlrdb-core-version: 0.1.1.1+version: 0.1.2.0 synopsis: High-level Redis Database Core API description: A library for type-driven interaction with Redis license: MIT
src/HLRDB/Core.hs view
@@ -57,6 +57,7 @@ , zincrby , zcard , zscan+ , zrangebyscore -- * Universal , HLRDB.Core.del@@ -90,6 +91,7 @@ import HLRDB.Structures.HSet import HLRDB.Structures.Set import HLRDB.Structures.SSet+ -- | Delete all data for the given keys in Redis del :: (Traversable t , MonadRedis m) => RedisStructure v a b -> t a -> m (ActionPerformed Deletion)
src/HLRDB/Structures/SSet.hs view
@@ -17,6 +17,7 @@ , HLRDB.Structures.SSet.zincrby , HLRDB.Structures.SSet.zcard , HLRDB.Structures.SSet.zscan+ , HLRDB.Structures.SSet.zrangebyscore ) where import Control.Lens@@ -24,6 +25,7 @@ import Database.Redis as Redis import HLRDB.Primitives.Redis import HLRDB.Internal+import Data.ByteString.Char8 (ByteString, pack) trimInternal :: MonadRedis m => RedisSSet a b -> a -> Integer -> m ()@@ -129,4 +131,27 @@ let f (x,s) = (d (pure x) , s) in unwrapCursor (fmap f) . Redis.zscan (primKey p k)++-- | Retrieve items in a score range; final parameters are @min@, @max@, @offset@, and @limit@+zrangebyscore :: MonadRedis m => RedisSSet a b -> a -> Maybe Double -> Maybe Double -> Maybe Integer -> Maybe Integer -> m [ (b , Double) ]+zrangebyscore p@(RSortedSet (E _ _ d) _) k mmin mmax mo ml =+ (fmap . fmap) (over _1 (d . Identity))+ $ unwrap+ $ req+ (primKey p k)+ (maybe "-inf" encode mmin)+ (maybe "+inf" encode mmax)+ (encode <$> mo)+ (encode <$> ml)+ where+ encode :: Show a => a -> ByteString+ encode = pack . show++ req :: RedisCtx m f => ByteString -> ByteString -> ByteString -> Maybe ByteString -> Maybe ByteString-> m (f [ (ByteString , Double) ])+ req ke mi ma Nothing Nothing =+ sendRequest $ [ "ZRANGEBYSCORE", ke , mi , ma , "WITHSCORES" ]+ req ke mi ma (Just off) mli =+ sendRequest $ [ "ZRANGEBYSCORE", ke , mi , ma , "WITHSCORES" , "LIMIT", off , maybe (encode (maxBound :: Int64)) id mli ]+ req ke mi ma Nothing (Just li) =+ sendRequest $ [ "ZRANGEBYSCORE", ke , mi , ma , "WITHSCORES" , "LIMIT", "0" , li ]