documentdb-utils
Version:
Drop-in replacement+extensions for Azure's DocumentDB node.js client with auto-retry on 429 errors plus a lot more
88 lines (77 loc) • 2.78 kB
JavaScript
// Generated by CoffeeScript 1.9.2
(function() {
var async, expandScript, fs, getLinkArray, loadScripts, loadSourceFromFile, loadSourceToOneCollection, path;
path = require('path');
fs = require('fs');
expandScript = require(path.join(__dirname, 'expandScript'));
getLinkArray = require(path.join(__dirname, 'link')).getLinkArray;
async = require('async');
loadSourceToOneCollection = function(spec, callback) {
if (spec.type === 'sprocs') {
return spec.client.upsertStoredProcedure(spec.collectionLink, spec.source, callback);
} else if (spec.type === 'UDFs') {
return spec.client.upsertUserDefinedFunction(spec.collectionLink, spec.source, callback);
}
};
loadSourceFromFile = function(spec, callback) {
var client, collectionLink, source, specs, type;
source = expandScript(spec.fullFilePath);
client = spec.client, type = spec.type;
specs = (function() {
var i, len, ref, results;
ref = spec.collectionLinks;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
collectionLink = ref[i];
results.push({
collectionLink: collectionLink,
source: source,
client: client,
type: type
});
}
return results;
})();
return async.each(specs, loadSourceToOneCollection, callback);
};
loadScripts = function(spec, callback) {
var client, collectionLinks, fullFilePath, i, len, scriptsDirectory, sourceFile, sourceFiles, sourceLinks, sourceNames, specs, type;
scriptsDirectory = spec.scriptsDirectory, client = spec.client, collectionLinks = spec.collectionLinks;
sourceFiles = fs.readdirSync(scriptsDirectory);
sourceNames = (function() {
var i, len, results;
results = [];
for (i = 0, len = sourceFiles.length; i < len; i++) {
sourceFile = sourceFiles[i];
results.push(path.basename(sourceFile, '.coffee'));
}
return results;
})();
sourceLinks = getLinkArray(collectionLinks, sourceNames);
specs = [];
type = spec.type;
for (i = 0, len = sourceFiles.length; i < len; i++) {
sourceFile = sourceFiles[i];
fullFilePath = path.join(scriptsDirectory, sourceFile);
specs.push({
fullFilePath: fullFilePath,
client: client,
collectionLinks: collectionLinks,
type: type
});
}
return async.each(specs, loadSourceFromFile, function(err) {
return callback(err, sourceLinks);
});
};
module.exports = {
loadSprocs: function(spec, callback) {
spec.type = 'sprocs';
return loadScripts(spec, callback);
},
loadUDFs: function(spec, callback) {
spec.type = 'UDFs';
return loadScripts(spec, callback);
}
};
}).call(this);