mongodb-queue 0.2.2.1 → 0.2.3.0
raw patch · 2 files changed
+26/−27 lines, 2 filesdep +data-defaultdep ~mongoDB
Dependencies added: data-default
Dependency ranges changed: mongoDB
Files
- Database/MongoDB/Queue.hs +21/−24
- mongodb-queue.cabal +5/−3
Database/MongoDB/Queue.hs view
@@ -2,12 +2,14 @@ module Database.MongoDB.Queue ( emit , nextFromQueue- , createEmitter- , createWorker+ , createEmitter, mkEmitter, EmitterOpts (..)+ , createWorker, mkWorker, WorkerOpts (..)+ ) where import Prelude hiding (lookup) import Control.Exception.Base (throwIO, Exception)+import Data.Default (Default (..)) import Data.Typeable (Typeable) import Database.MongoDB import Control.Monad.IO.Class (MonadIO, liftIO)@@ -59,22 +61,20 @@ , qeCollection :: Collection } -data EmitterOpts = EmitterOpts {- emitterVersion :: Int- , emitterRunner :: DBRunner+data EmitterOpts = EmitterOpts+ { emitterVersion :: Int , emitterCollection :: Collection } +instance Default EmitterOpts where+ def = EmitterOpts 1 queueCollection++ -- | create a QueueEmitter createEmitter :: DBRunner -> IO QueueEmitter-createEmitter runEmitter = mkEmitter $ EmitterOpts {- emitterVersion = 1- , emitterRunner = runEmitter- , emitterCollection = queueCollection- }--mkEmitter :: EmitterOpts -> IO QueueEmitter-mkEmitter EmitterOpts {..} = do+createEmitter runEmitter = mkEmitter def runEmitter+mkEmitter :: EmitterOpts -> DBRunner -> IO QueueEmitter+mkEmitter EmitterOpts {..} emitterRunner = do name <- getHostName return $ QueueEmitter emitterVersion name emitterRunner emitterCollection @@ -89,7 +89,7 @@ ] -- TODO: add timestamp -- but actually the _id will already have a timestamp- -- localTime: dt, + -- localTime: dt, -- globalTime: new Date(dt-self.serverTimeOffset), -- pickedTime: new Date(dt-self.serverTimeOffset), @@ -98,23 +98,20 @@ , qwCursor :: Cursor , qwCollection :: Collection }-data WorkerOpts = WorkerOpts { - workerRunner :: DBRunner- , workerMaxByteSize :: Int+data WorkerOpts = WorkerOpts+ { workerMaxByteSize :: Int , workerCollection :: Collection }+instance Default WorkerOpts where+ def = WorkerOpts 100000 queueCollection -- | creates a QueueWorker -- Do not 'work' multiple times against the same QueueWorker createWorker :: DBRunner -> IO QueueWorker-createWorker runWorker = mkWorker $ WorkerOpts { - workerRunner = runWorker- , workerMaxByteSize = 100000- , workerCollection = queueCollection- }+createWorker runWorker = mkWorker def runWorker -mkWorker :: WorkerOpts -> IO QueueWorker-mkWorker WorkerOpts {..} = do+mkWorker :: WorkerOpts -> DBRunner -> IO QueueWorker+mkWorker WorkerOpts {..} workerRunner = do _<- workerRunner $ createCollection [Capped, MaxByteSize workerMaxByteSize] workerCollection cursor <- getCursor workerRunner workerCollection
mongodb-queue.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: mongodb-queue-version: 0.2.2.1+version: 0.2.3.0 synopsis: a message queue using MongoDB -- description: homepage: https://github.com/docmunch/haskell-mongodb-queue@@ -25,11 +25,12 @@ -- other-modules: build-depends: base > 4.5 && < 5- , mongoDB+ , mongoDB >= 1.3.1 && < 1.4 , transformers , monad-control , text , network+ , data-default test-suite test type: exitcode-stdio-1.0@@ -41,12 +42,13 @@ build-depends: base > 4.5 && < 5- , mongoDB+ , mongoDB >= 1.3.1 && < 1.4 , transformers , monad-control , text , network , hspec+ , data-default