This repository has been archived by the owner on Aug 30, 2018. It is now read-only.
/
pipeline.js
69 lines (65 loc) · 2.13 KB
/
pipeline.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var fs = require('fs');
var async = require('async');
var sf = require('../lib/salesforce');
var config = {};// { logLevel: "DEBUG" };
var conn = new sf.Connection(config);
var Opportunity = conn.sobject('Opportunity');
async.waterfall([
function(next) {
conn.login(process.env.SF_USERNAME, process.env.SF_PASSWORD, next);
},
function(sobjects, next) {
Opportunity.find({ AccountId: { $ne: null }}, { Id: 1, Name: 1, "Account.Name": 1 })
.pipe(sf.RecordStream.map(function(r) {
r.Name = r.Account.Name + ' *** ' + r.Name;
return r;
}))
.pipe(Opportunity.updateBulk())
.on('response', function(rets) {
next(null, rets);
})
.on('error', function(err) {
next(err);
});
},
function(rets, next) {
var success = rets.filter(function(r) { return r.success; }).length;
var failure = rets.length - success;
console.log("bulk update sucess = " + success + ", failure = " + failure);
next();
},
function(next) {
Opportunity.find({ Name : { $like: '% *** %' }}, { Id: 1, Name: 1 })
.pipe(sf.RecordStream.map(function(r) {
r.Name = r.Name.replace(/^.+ \*\*\* /g, '');
return r;
}))
.pipe(Opportunity.updateBulk())
.on('response', function(rets) {
next(null, rets);
})
.on('error', function(err) {
next(err);
});
},
function(rets, next) {
var success = rets.filter(function(r) { return r.success; }).length;
var failure = rets.length - success;
console.log("bulk update sucess = " + success + ", failure = " + failure);
next();
},
function(next) {
Opportunity
.find({}, { Id: 1, Name: 1, Amount: 1, StageName: 1, CreatedDate: 1 })
.pipe(sf.RecordStream.filter(function(r) {
return r.Amount > 500000;
}))
.stream().pipe(fs.createWriteStream("opps.csv"))
.on('end', function() { next(); })
.on('error', function(err) { next(err); });
}
], function(err, res) {
if (err) {
console.error(err);
}
});