Skip to content

Commit

Permalink
added plugin for mongodb
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom Wilson committed Jan 18, 2012
1 parent 21657bc commit a609a70
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
54 changes: 54 additions & 0 deletions src/plugins/mongodb.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
mongo = require 'mongoskin'
_ = require 'underscore'


module.exports =
name: 'q-mongodb'
# establish db connection
# ---
# param: db - Database Connection URL
# param: collection_name - Name of Cloudq Collection (Defaults cloudq.jobs)
init: (done) ->
# Init MongoDb
@db = mongo.db(process.env.MONGOSVR or 'localhost:27017/cloudq')
@jobs = @db.collection('cloudq.jobs')
done()

attach: (options) ->
# queue job
# ---
# param: name - Name of Queue
# param: job - Job Object
# param: cb - callback
@queueJob = (name, job, cb) ->
_.extend job,
queue: name
queue_state: @QUEUED
inserted_at: new Date()
@jobs.insert job, cb

# reserve job for processing
# ---
# param: name - Name of Queue
# param: cb - Callback
@reserveJob = (name, cb) ->
@jobs.findAndModify(
{queue: name, queue_state: @QUEUED }
, [['inserted_at', 'ascending']]
, {$set: {queue_state: @RESERVED, updated_at: new Date() }}
, {new: true }
cb
)

# remove job
# ---
# param: job_id - id of job to remove
# param: cb - callback
@removeJob = (job_id, cb) -> @jobs.removeById job_id, cb

# jobs by queue by state
# ---
# param: cb - callback
@groupJobs = (cb) ->
@jobs.group ['queue','queue_state'], {}, {"count":0}, "function(obj,prev){ prev.count++; }", true, cb

1 change: 1 addition & 0 deletions src/queue.coffee
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
broadway = require 'broadway'
queue = new broadway.App()
queue.use(require(process.env.PLUGIN or './plugins/couchdb'))
#queue.use(require(process.env.PLUGIN or './plugins/mongodb'))

# # Queue
#
Expand Down

0 comments on commit a609a70

Please sign in to comment.