-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuildScript.js
59 lines (53 loc) · 2.26 KB
/
buildScript.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
// file thực hiện build ra script insert vào bảng từ các file tỷ giá dạng json trong thư mục output
// file thư viện
import { v4 as uuidv4 } from "uuid";
// danh sách các tỷ giá
import fileOne from "./output/exchange_rate_2024_12_01_2024_12_03.json" assert { type: "json" };
// file tự viết
import { logFile, logFileWithOuputPath } from "./src/logFile.js";
import config from "./config.js";
// các hằng số
const tableName = "sme.exchange_rate_history";
const keyPrimaryColumn = "exchange_rate_id";
const createdDateColumn = "created_date";
const currencyCodeColumn = "currency_code";
const currencyNameColumn = "currency_name";
const buyColumn = "buy";
const sellColumn = "sell";
const transferColumn = "transfer";
async function runTool() {
try {
// có bao nhiêu lần import thì có bấy nhiêu lần thêm vào mảng dưới đây
let exchangeRateCollection = [...fileOne];
// tạo lệnh xóa trước tiên
let script = `delete from ${tableName} where ${createdDateColumn} between '${config.dayStart}' and '${config.dayEnd}';\r\n`;
let scriptUpdateAvgRate = `update ${tableName} set avg_transfer_rate = (buy + sell)/2 where ${createdDateColumn} between '${config.dayStart}' and '${config.dayEnd}';\r\n`;
exchangeRateCollection.forEach((exchangeRate) => {
if (
exchangeRate &&
exchangeRate.day &&
exchangeRate.data &&
exchangeRate.data.length > 0
) {
let currentDate = exchangeRate.day;
exchangeRate.data.forEach((item) => {
if (item && item.currencyCode && item.currencyName) {
let tempScript = `insert into ${tableName} (${keyPrimaryColumn}, ${createdDateColumn}, ${currencyCodeColumn}, ${currencyNameColumn}, ${buyColumn}, ${sellColumn}, ${transferColumn}) values ('${uuidv4()}' , '${currentDate} 23:59:00', '${
item.currencyCode
}', '${item.currencyName}', ${item.cash}, ${item.sell}, ${
item.transfer
});\r\n`;
script += tempScript;
}
});
}
});
if (script) {
script += scriptUpdateAvgRate;
await logFileWithOuputPath(script, config.outputGenScript);
}
} catch (error) {
await logFile(error, "buildScript.runTool");
}
}
runTool();