packages feed

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 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 ]