step 2 : try build

This commit is contained in:
sindhu
2024-07-25 12:38:41 +07:00
parent 84607a40db
commit 804f012b82
13 changed files with 293 additions and 44 deletions

15
build/config/config.js Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const j_config = JSON.parse((0, fs_1.readFileSync)("./config-etl-tat.json").toString());
const config = {
base_url: j_config["base_url"],
schedule: j_config["schedule"],
delay: j_config["delay"],
row_per_batch: j_config["row_per_batch"],
// kode, date, target
// kode: j_config["kode"],
// date: j_config["date"],
// target: j_config["target"]
};
exports.default = config;

41
build/config/logging.js Normal file
View File

@@ -0,0 +1,41 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const moment_1 = __importDefault(require("moment"));
const getTimeStamp = () => {
const dt = (0, moment_1.default)().format("yyyy-MM-DD HH:mm:ss");
return dt;
};
const info = (namespace, message, object) => {
if (object) {
console.log(`[${getTimeStamp()}] [INFO] [${namespace}] [${message}]`, object);
}
else {
console.log(`[${getTimeStamp()}] [INFO] [${namespace}] [${message}]`);
}
};
const warning = (namespace, message, object) => {
if (object) {
console.log(`[${getTimeStamp()}] [WARNING] [${namespace}] [${message}]`, object);
}
else {
console.log(`[${getTimeStamp()}] [WARNING] [${namespace}] [${message}]`);
}
};
const error = (namespace, message, object) => {
if (object) {
console.log(`[${getTimeStamp()}] [ERROR] [${namespace}] [${message}]`, object);
}
else {
console.log(`[${getTimeStamp()}] [ERROR] [${namespace}] [${message}]`);
}
};
const delay = (time) => new Promise((res) => setTimeout(res, time));
exports.default = {
info,
warning,
error,
delay,
};

2
build/interfaces.js Normal file
View File

@@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

31
build/lib_052_000.js Normal file
View File

@@ -0,0 +1,31 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.rpt_052_000 = void 0;
const axios_1 = __importDefault(require("axios"));
const config_1 = __importDefault(require("./config/config"));
const logging_1 = __importDefault(require("./config/logging"));
const server_1 = require("./server");
const rpt_052_000 = async (kode, date, target) => {
// etl/Tat/proses_etl/000/2021-06-12/0
const url_patient = config_1.default.base_url + "etl/Tat/proses_etl/" + kode + "/" + date + "/" + target;
logging_1.default.info(server_1.NAME_SPACE, "Info : " + url_patient);
try {
const resp = await axios_1.default.get(url_patient, {
responseType: "arraybuffer",
});
const jresp = JSON.parse(resp.data.toString());
return jresp;
}
catch (e) {
if (axios_1.default.isAxiosError(e)) {
logging_1.default.error(server_1.NAME_SPACE, e.response?.data.toString());
}
else if (e instanceof Error) {
logging_1.default.error(server_1.NAME_SPACE, e.message);
}
}
};
exports.rpt_052_000 = rpt_052_000;

30
build/lib_order.js Normal file
View File

@@ -0,0 +1,30 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.get_order = void 0;
const axios_1 = __importDefault(require("axios"));
const config_1 = __importDefault(require("./config/config"));
const logging_1 = __importDefault(require("./config/logging"));
const server_1 = require("./server");
const get_order = async (row_per_batch) => {
const url_patient = config_1.default.base_url + "/etl/getorder/getdata?limit=" + row_per_batch;
logging_1.default.info(server_1.NAME_SPACE, "Info : " + url_patient);
try {
const resp = await axios_1.default.get(url_patient, {
responseType: "arraybuffer",
});
const jresp = JSON.parse(resp.data.toString());
return jresp;
}
catch (e) {
if (axios_1.default.isAxiosError(e)) {
logging_1.default.error(server_1.NAME_SPACE, e.response?.data.toString());
}
else if (e instanceof Error) {
logging_1.default.error(server_1.NAME_SPACE, e.message);
}
}
};
exports.get_order = get_order;

89
build/server.js Normal file
View File

@@ -0,0 +1,89 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NAME_SPACE = void 0;
const config_1 = __importDefault(require("./config/config"));
const logging_1 = __importDefault(require("./config/logging"));
const Xcron = __importStar(require("node-cron"));
exports.NAME_SPACE = "OneEtlTat Gateway";
const VERSION = "1.0";
let isRunning = false;
let isRefreshRunning = false;
logging_1.default.info(exports.NAME_SPACE, "Starting " + VERSION);
const on_init = async () => {
logging_1.default.info(exports.NAME_SPACE, "On Init Start");
await one_result_job();
logging_1.default.info(exports.NAME_SPACE, "On Init End");
};
on_init();
async function one_result_job() {
if (isRunning) {
logging_1.default.info(exports.NAME_SPACE, "Still Running");
return;
}
isRunning = true;
try {
let dateTime = new Date();
let dateTimeString = dateTime.toString();
logging_1.default.info(exports.NAME_SPACE, "Starting Job " + VERSION);
logging_1.default.info(exports.NAME_SPACE, "dateTimeString " + dateTimeString);
// rpt_052_000
// logging.info(NAME_SPACE, "rpt_052_000");
// var resp = await rpt_052_000("000",dateTimeString,"0");
// if (resp["status"] == "OK") {
// logging.info(NAME_SPACE, "\t Success");
// } else {
// logging.error(NAME_SPACE, "\t Error " + resp["message"]);
// }
// logging.info(NAME_SPACE, "Wait " + config.delay + " second");
// await delay(config.delay * 1000);
logging_1.default.info(exports.NAME_SPACE, "End Job");
isRunning = false;
}
catch (e) {
isRunning = false;
if (e instanceof Error) {
logging_1.default.error(exports.NAME_SPACE, e.message);
}
else {
logging_1.default.error(exports.NAME_SPACE, "Unknown");
}
}
}
// console.log(config);
for (const sched of config_1.default.schedule) {
Xcron.schedule(sched, async () => {
await one_result_job();
}, {
timezone: "Asia/Jakarta",
});
}
// ------------- function
async function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

View File

@@ -2,5 +2,8 @@
"base_url": "http://devone.aplikasi.web.id/one-api/", "base_url": "http://devone.aplikasi.web.id/one-api/",
"schedule": ["0 5,12,17 * * *"], "schedule": ["0 5,12,17 * * *"],
"delay": 5, "delay": 5,
"row_per_batch": 50 "row_per_batch": 50,
"kode":"000",
"date":"2021-06-12",
"target":"0"
} }

19
dist/daemon.js vendored Normal file
View File

@@ -0,0 +1,19 @@
const ScheduledTask = require('../scheduled-task');
let scheduledTask;
function register(message){
const script = require(message.path);
scheduledTask = new ScheduledTask(message.cron, script.task, message.options);
scheduledTask.on('task-done', (result) => {
process.send({ type: 'task-done', result});
});
process.send({ type: 'registred' });
}
process.on('message', (message) => {
switch(message.type){
case 'register':
return register(message);
}
});

9
dist/one-etl-tat-gw.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -5,7 +5,7 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"build": "rm -rf build/ && prettier --write source/ && tsc", "build": "rm -rf build/ && prettier --write source/ && tsc",
"compile": "export NODE_OPTIONS=--openssl-legacy-provider && ncc build build/server.js -m -o dist && mv dist/index.js dist/one-result-gw.js" "compile": "SET NODE_OPTIONS=--openssl-legacy-provider && ncc build build/server.js -m -o dist && mv dist/index.js dist/one-etl-tat-gw.js"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",

View File

@@ -5,6 +5,10 @@ interface IConfig {
schedule: string[]; schedule: string[];
delay: number; delay: number;
row_per_batch: number; row_per_batch: number;
// kode, date, target
// kode:string,
// date:string,
// target:string
} }
const j_config = JSON.parse(readFileSync("./config-etl-tat.json").toString()); const j_config = JSON.parse(readFileSync("./config-etl-tat.json").toString());
@@ -13,5 +17,9 @@ const config: IConfig = {
schedule: j_config["schedule"], schedule: j_config["schedule"],
delay: j_config["delay"], delay: j_config["delay"],
row_per_batch: j_config["row_per_batch"], row_per_batch: j_config["row_per_batch"],
// kode, date, target
// kode: j_config["kode"],
// date: j_config["date"],
// target: j_config["target"]
}; };
export default config; export default config;

28
source/lib_052_000.ts Normal file
View File

@@ -0,0 +1,28 @@
import axios from "axios";
import config from "./config/config";
import logging from "./config/logging";
import { NAME_SPACE } from "./server";
export const rpt_052_000 = async (
kode: string,
date: string,
target: string
) => {
// etl/Tat/proses_etl/000/2021-06-12/0
const url_patient =
config.base_url + "etl/Tat/proses_etl/" + kode + "/" + date + "/" + target;
logging.info(NAME_SPACE, "Info : " + url_patient);
try {
const resp = await axios.get(url_patient, {
responseType: "arraybuffer",
});
const jresp = JSON.parse(resp.data.toString());
return jresp;
} catch (e) {
if (axios.isAxiosError(e)) {
logging.error(NAME_SPACE, e.response?.data.toString());
} else if (e instanceof Error) {
logging.error(NAME_SPACE, e.message);
}
}
};

View File

@@ -1,17 +1,10 @@
import config from "./config/config"; import config from "./config/config";
import logging from "./config/logging"; import logging from "./config/logging";
import * as Xcron from "node-cron"; import * as Xcron from "node-cron";
import { get_order } from "./lib_order";
import axios from "axios";
export const NAME_SPACE = "OneEtlTat Gateway"; export const NAME_SPACE = "OneEtlTat Gateway";
const VERSION = "1.0"; const VERSION = "1.0";
const pre_url_lab = config.base_url + "/etl/mgmmcu/generate_kelainan_lab/";
const pre_url_nonlab =
config.base_url + "/etl/mgmmcu/generate_kelainan_nonlab/";
const pre_url_fisik = config.base_url + "/etl/fisik/generate/";
let isRunning: boolean = false; let isRunning: boolean = false;
let isRefreshRunning: boolean = false; let isRefreshRunning: boolean = false;
@@ -32,42 +25,23 @@ async function one_result_job() {
} }
isRunning = true; isRunning = true;
try { try {
let dateTime = new Date();
let dateTimeString = dateTime.toString();
logging.info(NAME_SPACE, "Starting Job " + VERSION); logging.info(NAME_SPACE, "Starting Job " + VERSION);
//Get Order logging.info(NAME_SPACE, "dateTimeString " + dateTimeString);
logging.info(NAME_SPACE, "Get Etl Mcu");
var req = await get_order(config.row_per_batch); // rpt_052_000
if (req["status"] != "OK") { // logging.info(NAME_SPACE, "rpt_052_000");
logging.error(NAME_SPACE, "\t Error", req); // var resp = await rpt_052_000("000",dateTimeString,"0");
} else { // if (resp["status"] == "OK") {
logging.info(NAME_SPACE, "\t Process Etl start"); // logging.info(NAME_SPACE, "\t Success");
for (var i = 0; i < req["data"].length; i++) { // } else {
var nolab = req["data"][i]["no_reg"]; // logging.error(NAME_SPACE, "\t Error " + resp["message"]);
logging.info(NAME_SPACE, "\t Process Etl : " + nolab); // }
var headerID = req["data"][i]["T_OrderHeaderID"]; // logging.info(NAME_SPACE, "Wait " + config.delay + " second");
var mgmMcuID = req["data"][i]["Mgm_McuID"]; // await delay(config.delay * 1000);
var etl_resp = "";
//Etl Lab
var url_lab = pre_url_lab + "/" + mgmMcuID + "/" + headerID;
logging.info(NAME_SPACE, "\t\t Lab :" + url_lab);
etl_resp = await axios.get(url_lab);
logging.info(NAME_SPACE, "\t\t\t", etl_resp);
//Etl NonLab
var url_nonlab = pre_url_nonlab + "/" + mgmMcuID + "/" + headerID;
logging.info(NAME_SPACE, "\t\t NonLab:" + url_nonlab);
etl_resp = await axios.get(url_nonlab);
var j_resp = JSON.parse(etl_resp);
logging.info(NAME_SPACE, "\t\t\t", j_resp["status"]);
//Etl Fisik
var url_fisik = pre_url_fisik + "/" + mgmMcuID + "/" + headerID;
logging.info(NAME_SPACE, "\t\t Fisik :" + url_fisik);
etl_resp = await axios.get(url_fisik);
j_resp = JSON.parse(etl_resp);
logging.info(NAME_SPACE, "\t\t\t", j_resp["status"]);
//Sleep
logging.info(NAME_SPACE, "\t wait 3s");
await delay(3000);
}
}
logging.info(NAME_SPACE, "End Job"); logging.info(NAME_SPACE, "End Job");
isRunning = false; isRunning = false;
} catch (e) { } catch (e) {