-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhana-client.js
82 lines (75 loc) · 1.96 KB
/
hana-client.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
70
71
72
73
74
75
76
77
78
79
80
81
82
const hdbext = require('sap-hdbext-promisfied');
const simpleParser = require('mailparser').simpleParser;
const fs = require('fs');
const cliProgress = require('cli-progress');
const emailSql = `
INSERT INTO "EMAIL" (
EMAIL_DATE,
MESSAGE_ID,
FROM_ADDRESS,
TO_ADDRESS,
CC_ADDRESS,
BCC_ADDRESS,
SUBJECT,
TEXT,
TEXT_AS_HTML
)
VALUES (TO_DATE(?, 'YYYY-MM-DD'),?,?,?,?,?,?,?,?);
`;
const attachSQL = `
INSERT INTO "ATTACHMENT" (
MESSAGE_ID,
FILENAME,
CONTENT_TYPE,
SIZE,
CONTENT,
CID
)
VALUES (?,?,?,?,?,?);
`;
const load = async (messages) => {
const config = JSON.parse(fs.readFileSync('service-key.json'));
const hana = await hdbext.createConnection(config);
let bar1 = new cliProgress.SingleBar(
{
stopOnComplete: true,
},
cliProgress.Presets.shades_classic,
);
bar1.start(messages.length, 0);
messages.forEach(async (msg) => {
let parsed = {};
try {
parsed = await simpleParser(msg, {});
} catch (error) {
console.error('Parsing error', error);
throw error;
}
const stringDate = `${parsed.date.getFullYear()}-${parsed.date.getMonth() + 1}-${parsed.date.getDate()}`;
let bindParams = [
stringDate,
parsed.messageId,
parsed.from ? parsed.from.text : null,
parsed.to ? parsed.from.text : null,
parsed.cc ? parsed.cc.text : null,
parsed.bcc ? parsed.bcc.text : null,
parsed.subject,
parsed.text,
parsed.textAsHtml,
];
try {
await hana.exec(emailSql, bindParams);
if (parsed.attachments.length > 0) {
parsed.attachments.forEach(async (attachment) => {
bindParams = [parsed.messageId, attachment.filename, attachment.contentType, attachment.size, attachment.content.toString(), attachment.cid];
await hana.exec(attachSQL, bindParams);
});
}
bar1.increment();
} catch (error) {
console.error('SQL error', error);
throw error;
}
});
};
exports.load = load;