-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathchangeActionDates.js
More file actions
115 lines (102 loc) · 3.03 KB
/
changeActionDates.js
File metadata and controls
115 lines (102 loc) · 3.03 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*
Given an accountsDates.jsonl file, lookup the actual-cost-record and change the associated
account createDate to whatever is in the accountDates.jsonl file
*/
const fs = require('fs');
const superagent = require('superagent');
const readline = require('readline');
const { getAuthToken } = require('./lib/login');
const inFile = process.argv[2];
const debug = process.env.DEBUG;
const wait = (ms) => {
console.log(`(Waiting ${ms} ms...)`);
return new Promise((resolve) => setTimeout(resolve, ms));
};
const getId = async (config, id, ep) => {
let url = `${config.okapi}/${ep}/${id}`;
console.log(`GET ${url}`);
let rec;
try {
res = await superagent
.get(url)
.set('User-Agent', config.agent)
.set('x-okapi-token', config.token);
rec = res.body;
} catch (e) {
console.log(`${e}`);
}
return rec;
}
const getQuery = async (config, query, ep) => {
let url = `${config.okapi}/${ep}?query=${query}`;
console.log(`GET ${url}`);
let recs;
try {
let res = await superagent
.get(url)
.set('User-Agent', config.agent)
.set('cookie', config.cookie)
.set('x-okapi-tenant', config.tenant)
.set('x-okapi-token', config.token);
recs = res.body;
} catch (e) {
console.log(`${e}`);
}
return recs;
}
const putId = async (config, id, ep, payload) => {
let url = `${config.okapi}/${ep}/${id}`;
console.log(`PUT ${url}`);
try {
res = await superagent
.put(url)
.send(payload)
.set('User-Agent', config.agent)
.set('cookie', config.cookie)
.set('x-okapi-tenant', config.tenant)
.set('x-okapi-token', config.token)
.set('content-type', 'application/json');
} catch (e) {
console.log(e);
}
}
(async () => {
try {
if (!inFile) {
throw ('Usage: node changeAccountDate.js <actionsDates.jsonl>');
}
let start = new Date().valueOf();
let config = await getAuthToken(superagent);
const fileStream = fs.createReadStream(inFile);
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
let c = 0;
for await (const line of rl) {
c++
console.log(`-------------------- [${c}] --------------------`)
let drec = JSON.parse(line);
let arecs = await getQuery(config, `userId==${drec.uid}%20AND%20itemId==${drec.iid}`, 'accounts');
if (arecs && arecs.accounts) {
for (let x = 0; x < arecs.accounts.length; x++) {
let arec = arecs.accounts[x];
let frecs = await getQuery(config, `accountId==${arec.id}`, 'feefineactions');
for (let y = 0; y < frecs.feefineactions.length; y++) {
let frec = frecs.feefineactions[y];
frec.dateAction = drec.date;
await putId(config, frec.id, 'feefineactions', frec);
}
}
}
}
let end = new Date().valueOf();
let tt = (end - start)/1000;
console.log('Done!');
console.log('Count:', c);
console.log('Time:', tt);
} catch (e) {
let msg = (debug) ? e : `${e}`;
console.log(msg);
}
})();