fh-wfm-sync
Advanced tools
Comparing version 0.1.2 to 0.1.3-alpha.504.1
@@ -1,6 +0,6 @@ | ||
var _ = require('lodash') | ||
, q = require('q'); | ||
var _ = require('lodash'); | ||
var q = require('q'); | ||
var mediatorManager = require('./mediator-subscribers'); | ||
var debug = require('../utils/logger')(__filename); | ||
/** | ||
@@ -77,2 +77,32 @@ * | ||
/** | ||
* Sets sync status for a result object. | ||
* @param {object} event - object passed in by sync event handler, should contain data used for logItem object. | ||
*/ | ||
DataManager.prototype.addEvent = function addEvent(event) { | ||
debug('addEvent', event); | ||
var self = this; | ||
var deferred = q.defer(); | ||
this.$fh.sync.getMetaData(this.datasetId, function(metadata) { | ||
metadata = metadata || {}; | ||
metadata.syncEvents = metadata.syncEvents || {}; | ||
metadata.syncEvents[event.uid] = { | ||
entityId: event.uid, | ||
code: event.code, | ||
action: event.message.action, | ||
message: event.message.msg, | ||
type: event.message.type, | ||
ts: Date.now() | ||
}; | ||
self.$fh.sync.setMetaData(self.datasetId, metadata, deferred.resolve, deferred.reject); | ||
}, deferred.reject); | ||
return deferred.promise; | ||
}; | ||
/** | ||
* Creating all of the mediator subscribers for this sync data set. | ||
@@ -79,0 +109,0 @@ */ |
@@ -8,4 +8,4 @@ 'use strict'; | ||
, DataManager = require('./data-manager'); | ||
var debug = require('../utils/logger')(__filename); | ||
var $fh, | ||
@@ -44,2 +44,3 @@ initialized = false, | ||
function init(_$fh, _syncOptions, _mediator) { | ||
debug('Client init'); | ||
if (initialized) { | ||
@@ -46,0 +47,0 @@ return; |
@@ -27,3 +27,3 @@ var CONSTANTS = require('../../constants'); | ||
var datasetItemToCreate = parameters.itemToCreate; | ||
delete datasetItemToCreate._syncStatus; | ||
//Creating a data item for this dataset. | ||
@@ -30,0 +30,0 @@ datasetManager.create(datasetItemToCreate).then(function(createdDatasetItem) { |
@@ -5,2 +5,3 @@ var _ = require('lodash'); | ||
var MediatorTopicUtility = require('fh-wfm-mediator/lib/topics'); | ||
var syncEventHandler = require('./sync-events'); | ||
@@ -47,2 +48,6 @@ var topicHandlers = { | ||
_.each(CONSTANTS.SYNC_TOPICS, function(syncTopicName) { | ||
datasetSyncSubscribers.on(syncTopicName, syncEventHandler(datasetManager)); | ||
}); | ||
//For each remote error, publish a sync error topic | ||
@@ -49,0 +54,0 @@ //This can be subscribed to by other modules. (Generally the module that created the manager) |
@@ -23,17 +23,22 @@ var CONSTANTS = require('../../constants'); | ||
parameters = parameters || {}; | ||
//Creating the item in the sync store | ||
datasetManager.list().then(function(arrayOfDatasetItems) { | ||
var listDoneTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.LIST, CONSTANTS.DONE_PREFIX, parameters.topicUid); | ||
datasetManager.$fh.sync.getMetaData(datasetManager.datasetId, function(metadata) { | ||
datasetManager.list().then(function(arrayOfDatasetItems) { | ||
var listDoneTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.LIST, CONSTANTS.DONE_PREFIX, parameters.topicUid); | ||
self.mediator.publish(listDoneTopic, arrayOfDatasetItems); | ||
if (metadata.syncEvents) { | ||
arrayOfDatasetItems.forEach(function(item) { | ||
item._syncStatus = metadata.syncEvents[item.id]; | ||
}); | ||
} | ||
self.mediator.publish(listDoneTopic, arrayOfDatasetItems); | ||
}).catch(function(error) { | ||
var listErrorTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.LIST, CONSTANTS.ERROR_PREFIX, parameters.topicUid); | ||
}).catch(function(error) { | ||
self.mediator.publish(listErrorTopic, error); | ||
}); | ||
}); | ||
var listErrorTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.LIST, CONSTANTS.ERROR_PREFIX, parameters.topicUid); | ||
self.mediator.publish(listErrorTopic, error); | ||
}); | ||
}; | ||
}; |
@@ -27,14 +27,19 @@ var CONSTANTS = require('../../constants'); | ||
//Creating the item in the sync store | ||
datasetManager.read(parameters.id).then(function(itemRead) { | ||
var readDoneTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.READ, CONSTANTS.DONE_PREFIX, parameters.topicUid); | ||
datasetManager.$fh.sync.getMetaData(datasetManager.datasetId, function(metadata) { | ||
datasetManager.read(parameters.id).then(function(itemRead) { | ||
var readDoneTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.READ, CONSTANTS.DONE_PREFIX, parameters.topicUid); | ||
if (metadata.syncEvents) { | ||
itemRead._syncStatus = metadata.syncEvents[itemRead.id]; | ||
} | ||
self.mediator.publish(readDoneTopic, itemRead); | ||
self.mediator.publish(readDoneTopic, itemRead); | ||
}).catch(function(error) { | ||
}).catch(function(error) { | ||
var readErrorTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.READ, CONSTANTS.ERROR_PREFIX, parameters.topicUid); | ||
var readErrorTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.READ, CONSTANTS.ERROR_PREFIX, parameters.topicUid); | ||
self.mediator.publish(readErrorTopic, error); | ||
}); | ||
}); | ||
self.mediator.publish(readErrorTopic, error); | ||
}); | ||
}; | ||
}; |
@@ -26,4 +26,7 @@ var CONSTANTS = require('../../constants'); | ||
var datasetItemToUpdate = parameters.itemToUpdate; | ||
delete datasetItemToUpdate._syncStatus; | ||
//Creating the item in the sync store | ||
datasetManager.update(parameters.itemToUpdate).then(function(updatedDataSetItem) { | ||
datasetManager.update(datasetItemToUpdate).then(function(updatedDataSetItem) { | ||
var creatDoneTopic = syncDatasetTopics.getTopic(CONSTANTS.TOPICS.UPDATE, CONSTANTS.DONE_PREFIX, parameters.topicUid); | ||
@@ -30,0 +33,0 @@ |
@@ -13,5 +13,11 @@ module.exports = { | ||
START: "start", | ||
STOP: "stop", | ||
STOP: "stop" | ||
}, | ||
SYNC_TOPICS:{ | ||
COLLISION_DETECTED: "collision_detected", | ||
REMOTE_UPDATE_APPLIED: "remote_update_applied", | ||
REMOTE_UPDATE_FAILED: "remote_update_failed", | ||
SYNC_COMPLETE: "sync_complete", | ||
FORCE_SYNC: "force_sync" | ||
} | ||
}; |
@@ -6,6 +6,7 @@ 'use strict'; | ||
var _ = require('lodash'); | ||
var debug = require('./utils/logger')(__filename); | ||
function initSync(mediator, mbaasApi, datasetId, syncOptions) { | ||
syncOptions = syncOptions || defaultConfig.syncOptions; | ||
debug('Sync init'); | ||
var dataListHandler = function(datasetId, queryParams, cb) { | ||
@@ -20,3 +21,3 @@ mediator.request('wfm:cloud:' + datasetId + ':list', queryParams, {uid: null, timeout: 5000}) | ||
}, function(error) { | ||
console.log('Sync error: init:', datasetId, error); | ||
debug('Sync error: init:', datasetId, error); | ||
cb(error); | ||
@@ -36,3 +37,3 @@ }); | ||
}, function(error) { | ||
console.log('Sync error: init:', datasetId, error); | ||
debug('Sync error: init:', datasetId, error); | ||
cb(error); | ||
@@ -47,3 +48,3 @@ }); | ||
}, function(error) { | ||
console.log('Sync error: init:', datasetId, error); | ||
debug('Sync error: init:', datasetId, error); | ||
cb(error); | ||
@@ -58,3 +59,3 @@ }); | ||
}, function(error) { | ||
console.log('Sync error: init:', datasetId, error); | ||
debug('Sync error: init:', datasetId, error); | ||
cb(error); | ||
@@ -69,3 +70,3 @@ }); | ||
}, function(error) { | ||
console.log('Sync error: init:', datasetId, error); | ||
debug('Sync error: init:', datasetId, error); | ||
cb(error); | ||
@@ -81,3 +82,3 @@ }); | ||
if (err) { | ||
console.log('Sync error: init:', datasetId, err); | ||
debug('Sync error: init:', datasetId, err); | ||
deferred.reject(err); | ||
@@ -84,0 +85,0 @@ } else { |
{ | ||
"name": "fh-wfm-sync", | ||
"version": "0.1.2", | ||
"version": "0.1.3-alpha.504.1", | ||
"description": "An sync module for WFM", | ||
@@ -5,0 +5,0 @@ "main": "lib/angular/sync-ng.js", |
918659
49
24680