-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
40 lines (32 loc) · 1.61 KB
/
index.js
File metadata and controls
40 lines (32 loc) · 1.61 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
const fs = require('fs');
const os = require('os');
const { exit } = require('process');
const { getObjectsFromFile } = require("./positionalFileHelper");
const { Converter } = require("./convertHelper");
const { getFileMapping } = require("./mappers/m80FileMapping");
const { getBindingMap8010, getBindingMap8080minus, getBindingMap8080plus } = require("./mappers/m80BindMapping");
const { DB, dataTransfers, dataTransferLines, dataTransferEvents } = require('./dbConnection');
// fs.readFile('./files/358M8020122900148776.txt', 'utf8', (err, data) => {
fs.readFile('./files/358M80SUMcrlf.txt', 'utf8', async (err, data) => {
const dataObjects = getObjectsFromFile(data, getFileMapping());
await DB.sync({ alter: true });
const [header, ...lines] = dataObjects;
const footer = lines.pop();
const headerFooterObj = {};
Object.keys(header).forEach(key => {
headerFooterObj[`h_${key}`] = header[key];
})
Object.keys(footer).forEach(key => {
headerFooterObj[`f_${key}`] = footer[key];
})
const dataTransfer = await dataTransfers.create(headerFooterObj);
const lineObjects = lines.map(item => ({...item, transfer_id: dataTransfer.id }))
await dataTransferLines.bulkCreate(lineObjects);
const eventObjects = new Converter().convert(dataObjects, [getBindingMap8080minus(), getBindingMap8080plus(), getBindingMap8010()], { header: 0, footer: -1});
const eventObjs = eventObjects.map(obj => {
const { key, ...json } = obj;
return { key: JSON.stringify(key), json: JSON.stringify(json) };
})
await dataTransferEvents.bulkCreate(eventObjs);
// console.log(JSON.stringify(eventObjs, null, 2));
});