rethinkdb-job-queue
Advanced tools
Comparing version 0.5.1 to 1.0.0
# `rethinkdb-job-queue` Change log | ||
## v1.0.0 / 2016-10-12 | ||
* `Job.update` now adds log entry automatically. | ||
* Bump to v1.0.0 to support SemVer. | ||
## v0.5.1 / 2016-10-11 | ||
@@ -4,0 +9,0 @@ |
@@ -94,3 +94,3 @@ 'use strict'; | ||
seeLogData: 'See the data attached to this log entry', | ||
jobUpdated: 'Job updated', | ||
jobUpdated: 'Job updated. Old values in log data', | ||
jobNotAdded: 'Job not added to the queue', | ||
@@ -97,0 +97,0 @@ jobAlreadyAdded: 'Job is already in the queue', |
@@ -6,18 +6,19 @@ 'use strict'; | ||
var enums = require('./enums'); | ||
var queueGetJob = require('./queue-get-job'); | ||
var jobAddLog = require('./job-add-log'); | ||
module.exports = function jobUpdate(job) { | ||
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enums.message.jobUpdated; | ||
var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : enums.log.information; | ||
var status = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : job.status; | ||
logger('jobUpdate: [' + job.id + ']'); | ||
var log = jobAddLog.createLogObject(job, data, message, type, status); | ||
job.log.push(log); | ||
var jobCopy = job.getCleanCopy(); | ||
var log = jobAddLog.createLogObject(job, null, enums.message.jobUpdated, enums.log.information); | ||
return Promise.resolve().then(function () { | ||
return job.q.r.db(job.q.db).table(job.q.name).get(job.id).update(jobCopy, { returnChanges: false }).run(); | ||
return queueGetJob(job.q, job.id); | ||
}).then(function (oldJobs) { | ||
log.data = oldJobs[0].getCleanCopy(); | ||
delete log.data.log; | ||
job.log.push(log); | ||
return job.getCleanCopy(); | ||
}).then(function (cleanJob) { | ||
return job.q.r.db(job.q.db).table(job.q.name).get(job.id).update(cleanJob, { returnChanges: false }).run(); | ||
}).then(function (updateResult) { | ||
@@ -24,0 +25,0 @@ logger('updateResult', updateResult); |
@@ -122,13 +122,7 @@ 'use strict'; | ||
value: function update() { | ||
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : enums.message.seeLogData; | ||
var _this2 = this; | ||
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enums.log.information; | ||
var status = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.status; | ||
logger('update [' + message + ']'); | ||
logger('update'); | ||
return this.q.ready().then(function () { | ||
return jobUpdate(_this2, data, message, type, status); | ||
return jobUpdate(_this2); | ||
}).catch(function (err) { | ||
@@ -135,0 +129,0 @@ logger('update Error:', err); |
{ | ||
"name": "rethinkdb-job-queue", | ||
"version": "0.5.1", | ||
"version": "1.0.0", | ||
"description": "A persistent job or task queue backed by RethinkDB.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -18,17 +18,2 @@ # Introduction | ||
## Warning - API Change in v0.5.0 | ||
Verion 1.0.0 will be soon, however there are breaking changes in v0.5.0: | ||
* `Job.createLog` method has been removed from Job objects. | ||
* `Job.addLog` signature change. | ||
* `Job.update` signature change. | ||
Non-breaking changes: | ||
* New dependency on [serialize-error](https://www.npmjs.com/package/serialize-error) | ||
* `next(error)` now stringifies the error to `Job.log[].data`. Still adds error message and stack to `Job.log[].errorMessage` and `Job.log[].errorStack`. | ||
See the [documentation][rjq-wiki-url] for more detail. | ||
## Features | ||
@@ -57,4 +42,2 @@ | ||
[queue-connection-url]: https://github.com/grantcarthew/node-rethinkdb-job-queue/wiki/Queue-Connection | ||
@@ -85,6 +68,4 @@ [queue-events-url]: https://github.com/grantcarthew/node-rethinkdb-job-queue/wiki/Queue-Events | ||
* There are over 1300 integration tests. | ||
* In a few months I will bump the version up to 1.0.0 to support [SemVer](http://semver.org/). | ||
* Please provide feedback or raise issues prior to the version bump. | ||
* Updated to v1.0.0 to support [SemVer](http://semver.org/). | ||
## Quick Start | ||
@@ -91,0 +72,0 @@ |
@@ -19,4 +19,2 @@ const test = require('tape') | ||
job.detail = tData | ||
let testLog | ||
let extra = 'extra data' | ||
let logObject = { foo: 'bar' } | ||
@@ -23,0 +21,0 @@ |
@@ -14,3 +14,3 @@ const test = require('tape') | ||
test('job-update', (t) => { | ||
t.plan(19) | ||
t.plan(31) | ||
@@ -55,3 +55,3 @@ const q = new Queue(tOpts.cxn(), tOpts.default()) | ||
job.dateEnable = tDate | ||
return jobUpdate(job, tData) | ||
return jobUpdate(job) | ||
}).then((updateResult) => { | ||
@@ -70,2 +70,14 @@ t.ok(updateResult, 'Job updated successfully') | ||
t.equal(updatedJob[0].log[1].message, enums.message.jobUpdated, 'Updated log message is present') | ||
t.equal(updatedJob[0].log[1].data.data, tData, 'Updated log data.data is present') | ||
t.ok(is.date(updatedJob[0].log[1].data.dateCreated), 'Updated log data.dateCreated is a date') | ||
t.ok(is.date(updatedJob[0].log[1].data.dateEnable), 'Updated log data.dateEnable is a date') | ||
t.ok(is.uuid(updatedJob[0].log[1].data.id), 'Updated log data.id is a uuid') | ||
t.ok(is.number(updatedJob[0].log[1].data.priority), 'Updated log data.priority is a number') | ||
t.ok(is.number(updatedJob[0].log[1].data.progress), 'Updated log data.progress is a number') | ||
t.ok(is.string(updatedJob[0].log[1].data.queueId), 'Updated log data.queueId is a string') | ||
t.ok(is.number(updatedJob[0].log[1].data.retryCount), 'Updated log data.retryCount is a number') | ||
t.ok(is.number(updatedJob[0].log[1].data.retryDelay), 'Updated log data.retryDelay is a number') | ||
t.ok(is.number(updatedJob[0].log[1].data.retryMax), 'Updated log data.retryMax is a number') | ||
t.ok(is.string(updatedJob[0].log[1].data.status), 'Updated log data.status is a string') | ||
t.ok(is.number(updatedJob[0].log[1].data.timeout), 'Updated log data.timeout is a number') | ||
t.equal(updatedJob[0].newData, tData, 'New job data is valid') | ||
@@ -72,0 +84,0 @@ t.equal(updatedJob[0].dateEnable.toString(), tDate.toString(), 'New job dateEnable is valid') |
@@ -6,6 +6,4 @@ const test = require('tape') | ||
const enums = require('../src/enums') | ||
const jobAddLog = require('../src/job-add-log') | ||
const Job = require('../src/job') | ||
const tData = require('./test-options').tData | ||
const lData = require('./test-options').lData | ||
const Queue = require('../src/queue') | ||
@@ -17,3 +15,3 @@ const tOpts = require('./test-options') | ||
test('job', (t) => { | ||
t.plan(93) | ||
t.plan(81) | ||
@@ -25,3 +23,2 @@ const q = new Queue(tOpts.cxn(), tOpts.default()) | ||
let savedJob | ||
let newTimeout = 1234 | ||
@@ -197,31 +194,2 @@ // ---------- Event Handler Setup ---------- | ||
// ---------- Update Job ---------- | ||
t.comment('job: Update Job with string message') | ||
savedJob.newData = tData | ||
savedJob.timeout = newTimeout | ||
return savedJob.update(tData) | ||
}).then((updateResult) => { | ||
t.ok(updateResult, 'Job update returned true') | ||
return q.getJob(savedJob.id) | ||
}).then((jobsFromDb) => { | ||
t.equal(jobsFromDb[0].id, savedJob.id, 'Job retrieved successfully') | ||
t.equal(jobsFromDb[0].newData, tData, 'Job new data valid') | ||
t.equal(jobsFromDb[0].timeout, newTimeout, 'Job new timeout valid') | ||
// ---------- Update Job Passing `data` object ---------- | ||
t.comment('job: Update Job with Object message') | ||
savedJob.newData = tData | ||
savedJob.timeout = newTimeout | ||
return savedJob.update(lData) | ||
}).then((updateResult) => { | ||
t.ok(updateResult, 'Job update returned true') | ||
return q.getJob(savedJob.id) | ||
}).then((jobsFromDb) => { | ||
const lastLogData = jobsFromDb[0].log[jobsFromDb[0].log.length - 1] | ||
t.equal(jobsFromDb[0].id, savedJob.id, 'Job retrieved successfully') | ||
t.equal(jobsFromDb[0].timeout, newTimeout, 'Job new timeout valid') | ||
t.equal(lastLogData.message, enums.message.seeLogData, 'Job log message property valid') | ||
t.equal(lastLogData.data.one_key, lData.one_key, 'Job log message property valid') | ||
t.equal(lastLogData.data.some_other_key, lData.some_other_key, 'Job log data property valid') | ||
removeEventHandlers() | ||
@@ -228,0 +196,0 @@ return q.reset() |
# WORKLOG | ||
Queue option parsing. | ||
## Update events in tests to support x of y | ||
* queue-process.spec Done! | ||
## Notes for documentation |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
293111
6588
244