Skip to content

Commit

Permalink
Switch to hedis package
Browse files Browse the repository at this point in the history
* * *
Drop unused MonadCatchIO dep.
  • Loading branch information
dzhus committed Feb 15, 2012
1 parent 3ba4cc8 commit 8307359
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 34 deletions.
8 changes: 3 additions & 5 deletions snap-redis.cabal
Expand Up @@ -7,7 +7,7 @@ Name: snap-redis
-- The package version. See the Haskell package versioning policy
-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
-- standards guiding when and how versions should be incremented.
Version: 0.1
Version: 0.2

-- A short (one-line) description of the package.
Synopsis: Redis support for Snap framework
Expand Down Expand Up @@ -58,13 +58,11 @@ Library
base >= 4 && < 5,
data-lens >= 2.0.1 && < 2.1,
data-lens-template >= 2.1 && < 2.2,
MonadCatchIO-transformers >= 0.2.1 && < 0.3,
hedis == 0.3.*,
mtl >= 2 && < 3,
redis == 0.12.*,
resource-pool-catchio == 0.2.*,
snap == 0.7.*,
text == 0.11.*,
time >= 1.1 && < 1.5
transformers == 0.2.*

-- Modules not exported by this package.
-- Other-modules:
Expand Down
47 changes: 18 additions & 29 deletions src/Snap/Snaplet/RedisDB.hs
Expand Up @@ -9,23 +9,19 @@ Redis DB snaplet.
-}

module Snap.Snaplet.RedisDB (RedisDB
, withRedisDB
, runRedisDB
, redisDBInit)
where

import Prelude hiding ((.))
import Control.Category ((.))
import Control.Monad.CatchIO
import Control.Monad.State

import Data.Lens.Common
import Data.Lens.Template
import Data.Text (Text)

import Data.Pool
import Database.Redis.Redis

import Data.Time.Clock
import Database.Redis

import Snap.Snaplet

Expand All @@ -38,43 +34,36 @@ description = "Redis snaplet."
------------------------------------------------------------------------------
-- | Snaplet's state data type
data RedisDB = RedisDB
{ _dbPool :: Pool Redis -- ^ DB connection pool.
{ _connection :: Connection -- ^ DB connection pool.
}

makeLens ''RedisDB

------------------------------------------------------------------------------
-- | Perform action using Redis connection from RedisDB snaplet pool.
--
-- | Perform action using Redis connection from RedisDB snaplet pool
-- (wrapper for 'Database.Redis.runRedis').
--
-- > withRedisDB database $ \db -> do
-- > r <- liftIO $ hgetall db key
withRedisDB :: (MonadCatchIO m, MonadState app m) =>
Lens app (Snaplet RedisDB) -> (Redis -> m b) -> m b
withRedisDB snaplet action = do
p <- gets $ getL (dbPool . snapletValue . snaplet)
withResource p action
-- > runRedisDB database $ do
-- > set "hello" "world"
runRedisDB :: (MonadIO m, MonadState app m) =>
Lens app (Snaplet RedisDB) -> Redis a -> m a
runRedisDB snaplet action = do
c <- gets $ getL (connection . snapletValue . snaplet)
liftIO $ runRedis c action


------------------------------------------------------------------------------
-- | Make RedisDB snaplet and initialize database connection. See
-- 'Data.Pool.createPool' for explanation of pool/stripe size values.
-- | Make RedisDB snaplet and initialize database connection.
--
-- > appInit :: SnapletInit MyApp MyApp
-- > appInit = makeSnaplet "app" "App with Redis child snaplet" Nothing $
-- > do
-- > d <- nestSnaplet "" database $
-- > redisDBInit "127.0.0.1" "6379" 5 5 60
-- > redisDBInit defaultConnectInfo
-- > return $ MyApp d
redisDBInit :: String -- ^ Redis host.
-> String -- ^ Redis port.
-> Int -- ^ Connection pool size (stripe count).
-> Int -- ^ Stripe size (connections per stripe count).
-> NominalDiffTime -- ^ Keep unused connection open for that long.
redisDBInit :: ConnectInfo -- ^ Information for connnecting to a Redis server.
-> SnapletInit b RedisDB
redisDBInit host port poolSize subpoolSize keepAlive =
redisDBInit connInfo =
makeSnaplet "snaplet-redis" description Nothing $ do
pool <- liftIO $
createPool (connect host port) disconnect
poolSize keepAlive subpoolSize
return $ RedisDB pool
conn <- liftIO $ connect connInfo
return $ RedisDB conn

0 comments on commit 8307359

Please sign in to comment.