UNPKG

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
// 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);