mongodb-queue 0.2.3.1 → 0.2.4
raw patch · 2 files changed
+10/−31 lines, 2 filesdep ~mongoDBPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: mongoDB
API changes (from Hackage documentation)
+ Database.MongoDB.Queue: emitterMaxByteSize :: EmitterOpts -> Int
- Database.MongoDB.Queue: EmitterOpts :: Int -> Collection -> EmitterOpts
+ Database.MongoDB.Queue: EmitterOpts :: Int -> Collection -> Int -> EmitterOpts
Files
- Database/MongoDB/Queue.hs +7/−28
- mongodb-queue.cabal +3/−3
Database/MongoDB/Queue.hs view
@@ -13,10 +13,10 @@ import Data.Typeable (Typeable) import Database.MongoDB import Control.Monad.IO.Class (MonadIO, liftIO)-import Control.Applicative (Applicative) import Control.Monad.Trans.Control (MonadBaseControl(..)) import Data.Text (Text) import Network.BSD (getHostName, HostName)+import Control.Monad (void) queueCollection, handled, dataField, _id, hostField, versionField :: Text queueCollection = "queue"@@ -26,33 +26,7 @@ versionField = "version" _id = "_id" --- from Database.Persist.MongoDB, trying to move into driver-findAndModify :: (Applicative m, MonadIO m)- => Query- -> Document -- ^ updates- -> Action m (Either String Document)-findAndModify (Query {- selection = Select sel collection- , project = project- , sort = sort- }) updates = do- result <- runCommand [- "findAndModify" := String collection- , "new" := Bool True -- return updated document, not original document- , "query" := Doc sel- , "update" := Doc updates- , "fields" := Doc project- , "sort" := Doc sort- ]- return $ case findErr result of- Nothing -> case lookup "value" result of- Nothing -> Left "findAndModify: no document found (value field was empty)"- Just doc -> Right doc- Just e -> Left e- where- findErr result = lookup "err" (at "lastErrorObject" result) - type DBRunner = (MonadIO m, MonadBaseControl IO m) => Action m a -> m a data QueueEmitter = QueueEmitter { qeVersion :: Int -- ^ version@@ -64,18 +38,22 @@ data EmitterOpts = EmitterOpts { emitterVersion :: Int , emitterCollection :: Collection+ , emitterMaxByteSize :: Int } instance Default EmitterOpts where- def = EmitterOpts 1 queueCollection+ def = EmitterOpts 1 queueCollection 100000 -- | create a QueueEmitter createEmitter :: DBRunner -> IO QueueEmitter createEmitter runEmitter = mkEmitter def runEmitter++-- | create an emitter with non-default configuration mkEmitter :: EmitterOpts -> DBRunner -> IO QueueEmitter mkEmitter EmitterOpts {..} emitterRunner = do name <- getHostName+ void $ emitterRunner $ createCollection [Capped, MaxByteSize emitterMaxByteSize] emitterCollection return $ QueueEmitter emitterVersion name emitterRunner emitterCollection -- | emit a message for a worker@@ -110,6 +88,7 @@ createWorker :: DBRunner -> IO QueueWorker createWorker runWorker = mkWorker def runWorker +-- | create an worker with non-default configuration mkWorker :: WorkerOpts -> DBRunner -> IO QueueWorker mkWorker WorkerOpts {..} workerRunner = do _<- workerRunner $
mongodb-queue.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: mongodb-queue-version: 0.2.3.1+version: 0.2.4 synopsis: a message queue using MongoDB -- description: homepage: https://github.com/docmunch/haskell-mongodb-queue@@ -25,7 +25,7 @@ -- other-modules: build-depends: base > 4.5 && < 5- , mongoDB >= 1.3.1 && < 1.4+ , mongoDB >= 1.4.1 && < 1.5 , transformers , monad-control , text@@ -42,7 +42,7 @@ build-depends: base > 4.5 && < 5- , mongoDB >= 1.3.1 && < 1.4+ , mongoDB >= 1.4.1 && < 1.5 , transformers , monad-control , text