Skip to content

Commit ae0bd08

Browse files
authored
Merge pull request #50 from e-oj/dev
Dev
2 parents 1995960 + b9292a1 commit ae0bd08

File tree

9 files changed

+72
-61
lines changed

9 files changed

+72
-61
lines changed

lib/roller.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ var FILE_SAVE = constants.FILE_SAVE;
2222

2323
//gen utils
2424
var updateState = utils.updateState;
25-
var getCollection = utils.getCollection;
2625

2726
// db utils
2827
var mongoose;
2928
var TaskMdl;
3029
var dbUtils;
3130
var getModel;
31+
var getCollectionForStep;
3232

3333
/**
3434
* Initializes variables and gets the roller.
@@ -44,6 +44,7 @@ var RollerProvider = function(_mongoose, _TaskMdl) {
4444
TaskMdl = _TaskMdl;
4545
dbUtils = require("./utils/db.utils")(mongoose);
4646
getModel = dbUtils.getModel;
47+
getCollectionForStep = dbUtils.getCollectionForStep;
4748

4849
return Roller;
4950
};
@@ -132,7 +133,7 @@ function getRollbackFunc(step) {
132133
* @returns {Promise|*}
133134
*/
134135
function rollbackSave(db, save, task) {
135-
var collection = getCollection(db, save);
136+
var collection = getCollectionForStep(db, save);
136137
var _id = save.dataStore[0]._id;
137138

138139
return collection.deleteOne({_id: _id}).then(function(){
@@ -150,7 +151,7 @@ function rollbackSave(db, save, task) {
150151
* @returns {Promise|*}
151152
*/
152153
function rollbackRemoveOrUpdate(db, step, task) {
153-
var collection = getCollection(db, step);
154+
var collection = getCollectionForStep(db, step);
154155
var chain = Promise.resolve();
155156

156157
step.dataStore.forEach(function(data) {

lib/task.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var fs = require("fs");
66

77
var constants = require("./constants");
88
var utils = require("./utils/gen.utils");
9-
var native = require("./task_core/native");
9+
var native = require("./task_core/native"); //set db utils when we get them
1010
var goose = require("./task_core/goose");
1111

1212
// general utility functions
@@ -54,6 +54,7 @@ var TaskProvider = function (_mongoose, _TaskMdl) {
5454
TaskMdl = _TaskMdl;
5555
Roller = require("./roller")(mongoose, _TaskMdl);
5656
dbUtils = require("./utils/db.utils")(mongoose);
57+
native.setDbUtils(dbUtils);
5758
modelCache = dbUtils.modelCache;
5859
setModel = dbUtils.setModel;
5960
getModel = dbUtils.getModel;
@@ -406,7 +407,7 @@ function performFileSave(step, task, results) {
406407
var options = step.options ? xcode(step.options, true) : {};
407408

408409
resolveFuture(options, results);
409-
options._id = options._id || utils.generateId();
410+
options._id = options._id || dbUtils.generateId();
410411

411412
step.options = options;
412413
step.dataStore = [{_id: options._id}];
@@ -488,7 +489,7 @@ function storeOldFile(task, step) {
488489
if (!file) return resolve(false);
489490

490491
var collection = task.constructor.collection;
491-
step.dataStore = [{removed: file._id, shadow: utils.generateId()}];
492+
step.dataStore = [{removed: file._id, shadow: dbUtils.generateId()}];
492493

493494
collection.updateOne({_id: task._id}, task.toObject()).then(function(){
494495
var writeStream = gfs.createWriteStream({

lib/task_core/goose.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ var dbUtils;
88

99
// gen utility functions
1010
var resolveFuture = utils.resolveFuture;
11-
var storeOldData = utils.storeOldData;
1211
var updateState = utils.updateState;
1312
var xcode = utils.xcode;
1413

1514
// db utility functions
1615
var getModel;
16+
var storeOldData;
1717

1818
// constants
1919
var PENDING = constants.PENDING;
@@ -22,6 +22,7 @@ var DONE = constants.DONE;
2222
exports.setDbUtils = function (_dbUtils) {
2323
dbUtils = _dbUtils;
2424
getModel = dbUtils.getModel;
25+
storeOldData = dbUtils.storeOldData;
2526
};
2627

2728
/**
@@ -82,7 +83,7 @@ exports.performSave = function performSave(step, task, results) {
8283
var doc = new Collection(data);
8384
var dataStore = [];
8485

85-
doc._id = doc._id || utils.generateId();
86+
doc._id = doc._id || dbUtils.generateId();
8687
dataStore.push({_id: doc._id});
8788

8889
step.dataStore = dataStore;

lib/task_core/native.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@
66
var constants = require("../constants");
77
var utils = require("../utils/gen.utils");
88

9+
var dbUtils;
10+
var storeOldData;
11+
exports.setDbUtils = function (_dbUtils) {
12+
dbUtils = _dbUtils;
13+
storeOldData = _dbUtils.storeOldData;
14+
};
15+
916
// utility functions
1017
var resolveFuture = utils.resolveFuture;
11-
var storeOldData = utils.storeOldData;
1218
var updateState = utils.updateState;
1319
var xcode = utils.xcode;
1420

@@ -70,7 +76,7 @@ exports.nativeSave = function(db, step, task, results){
7076

7177
resolveFuture(doc, results);
7278

73-
doc._id = doc._id || utils.generateId();
79+
doc._id = doc._id || dbUtils.generateId();
7480
step.dataStore = [{_id: doc._id}];
7581

7682
return updateState(task, step.index, PENDING).then(function(){

lib/utils/db.utils.js

+49
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,51 @@ module.exports = function(_mongoose) {
159159
return removeChain;
160160
}
161161

162+
/**
163+
* generates a MongoDB ObjectId
164+
*/
165+
function generateId(id) {
166+
return new mongoose.Types.ObjectId(id);
167+
}
168+
169+
/**
170+
* Gets the collection for a step
171+
*
172+
* @param db native db
173+
* @param step the step in question
174+
*
175+
* @returns native collection
176+
*/
177+
function getCollectionForStep(db, step){
178+
return step.useMongoose
179+
? mongoose.model(step.name).collection
180+
: db.collection(step.name)
181+
}
182+
183+
/**
184+
* This function stores data that's about to be
185+
* changed by a step, for rollback purposes
186+
*
187+
* @param db native db
188+
* @param step the step
189+
* @param condition literal obj rep of the step's condition
190+
*
191+
* @returns {Promise|*}
192+
*/
193+
function storeOldData(db, step, condition){
194+
var Collection = getCollectionForStep(db, step);
195+
var options = step.options
196+
? utils.xcode(step.options)
197+
: step.type === constants.REMOVE ? {multi: true} : null;
198+
var query = Collection.find(condition);
199+
var searchQuery = options && options.multi === true
200+
? query
201+
: query.limit(1);
202+
203+
return searchQuery.toArray().then(function(result){
204+
step.dataStore = result;
205+
});
206+
}
162207
return {
163208
setModel: setModel
164209
, getModel: getModel
@@ -168,5 +213,9 @@ module.exports = function(_mongoose) {
168213
, removeFile: removeFile
169214
, fileExists: fileExists
170215
, makeRemoveChain: makeRemoveChain
216+
, generateId: generateId
217+
, getCollection: getCollection
218+
, getCollectionForStep: getCollectionForStep
219+
, storeOldData: storeOldData
171220
};
172221
};

lib/utils/gen.utils.js

-47
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,9 @@
55

66
var constants = require("../constants");
77
var Promise = require("bluebird");
8-
var mongoose = require("mongoose");
98
var $ = constants.$PREFIX;
109
var DOT = constants.DOT_PREFIX;
1110

12-
/**
13-
* This function stores data that's about to be
14-
* changed by a step, for rollback purposes
15-
*
16-
* @param db native db
17-
* @param step the step
18-
* @param condition literal obj rep of the step's condition
19-
*
20-
* @returns {Promise|*}
21-
*/
22-
exports.storeOldData = function(db, step, condition){
23-
var Collection = getCollection(db, step);
24-
var options = step.options
25-
? xcode(step.options)
26-
: step.type === constants.REMOVE ? {multi: true} : null;
27-
var query = Collection.find(condition);
28-
var searchQuery = options && options.multi === true
29-
? query
30-
: query.limit(1);
31-
32-
return searchQuery.toArray().then(function(result){
33-
step.dataStore = result;
34-
});
35-
};
36-
3711
/**
3812
* Updates the state of a task's step.
3913
*
@@ -249,25 +223,4 @@ exports.formatData = function(data){
249223
return formatted;
250224
};
251225

252-
/**
253-
* generates a MongoDB ObjectId
254-
*/
255-
exports.generateId = function(id) {
256-
return new mongoose.Types.ObjectId(id);
257-
};
258-
259-
/**
260-
* Gets the collection for a step
261-
*
262-
* @param db native db
263-
* @param step the step in question
264-
*
265-
* @returns native collection
266-
*/
267-
var getCollection = exports.getCollection = function getCollection(db, step){
268-
return step.useMongoose
269-
? mongoose.model(step.name).collection
270-
: db.collection(step.name)
271-
};
272-
273226

tests/all.tests.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ global.TEST_COLLECTION_C = config.TEST_COLLECTION_C;
2828
global.TEST_FILE_PATH = config.TEST_FILE_PATH;
2929
global.TEST_FILE_TEXT = config.TEST_FILE_TEXT;
3030
global.TEST_FILE_NAME = "FAWN_TEST.oj";
31-
global.TEST_FILE_ID = utils.generateId();
31+
global.TEST_FILE_ID = global.dbUtils.generateId();
3232

3333
describe("ALL TESTS", function(){
3434
before(function(){

tests/roller.tests.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ module.exports = describe("Roller", function(){
7979

8080
it("should rollback file save", function () {
8181
var gfs = Grid(mongoose.connection.db);
82-
var id = utils.generateId();
82+
var id = dbUtils.generateId();
8383

8484
return task.saveFile(TEST_FILE_PATH, {_id: id})
8585
.save(TestMdlA, {_id: ["fail"]}, {name: "fail"})
@@ -92,7 +92,7 @@ module.exports = describe("Roller", function(){
9292

9393
it("should rollback file remove", function (done) {
9494
var gfs = Grid(mongoose.connection.db);
95-
var id = utils.generateId();
95+
var id = dbUtils.generateId();
9696
var writeStream = gfs.createWriteStream({_id: id});
9797

9898
writeStream.on("close", function () {

tests/task.tests.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ module.exports = describe("Task", function(){
333333
describe("Results Array", function () {
334334
it("Should have the results of all operations", function () {
335335
var gabe = new TestMdlB({name: "Gabe", age: 34});
336-
var id = utils.generateId();
336+
var id = dbUtils.generateId();
337337

338338
return expect(
339339
task.save(gabe)

0 commit comments

Comments
 (0)