itmsg_automation
Version:
This is RESTful API web server with Ansible. You can execute Ansible ADHOC, Playbook using this API server. If you want to give me a feedback, Please leave a comment on 'Github Repository > Discussions'!
210 lines (168 loc) • 5.78 kB
JavaScript
const express = require('express');
const router = express.Router();
const db = require('../db/db.js');
const hostBuilder = require('../dto/hostBuilder');
const hostSql = require('../db/sql/hostSql.js');
const invHostSql = require('../db/sql/invHostSql.js');
const addslashes = require('../db/addslashes.js');
/* Post Hosts (Insert) */
router.post('/', (req, res, next) => {
const dto = new hostBuilder().setName(addslashes(req.body.name))
.setContent(addslashes(req.body.content))
.setDomain(addslashes(req.body.domain))
.setOs(addslashes(req.body.os))
.setIp(addslashes(req.body.ip))
.setDatasource(addslashes(req.body.datasource))
.setDatacenter(addslashes(req.body.datacenter))
.setUse_yn(req.body.use_yn ? addslashes(req.body.use_yn) : "Y")
.build();
db.query(hostSql.post(), [dto.name, dto.content, dto.domain,
dto.os, dto.ip, dto.use_yn,
dto.datasource, dto.datacenter], (err) => {
if (err) return next(err);
return res.json(db.resultMsg('a001', req.body));
});
});
/* PUT Hosts (Update) */
router.put('/:seq', (req, res, next) => {
const seq = req.params.seq ? addslashes(req.params.seq) : "";
const dto = new hostBuilder().setName(addslashes(req.body.name))
.setContent(addslashes(req.body.content))
.setDomain(addslashes(req.body.domain))
.setOs(addslashes(req.body.os))
.setIp(addslashes(req.body.ip))
.setDatasource(addslashes(req.body.datasource))
.setDatacenter(addslashes(req.body.datacenter))
.setUse_yn(req.body.use_yn ? addslashes(req.body.use_yn) : "Y")
.build();
db.query(hostSql.update(), [dto.name, dto.content, dto.domain,
dto.os, dto.ip, dto.use_yn,
dto.datasource, dto.datacenter, seq], (err) => {
if(err) return next(err);
return res.json(db.resultMsg('a001', req.body));
});
});
/* DELETE Hosts (delete) */
router.delete('/:seq', (req, res, next) => {
let seq = req.params.seq ? addslashes(req.params.seq) : "";
db.query(hostSql.delete(), [seq], (hErr) => {
if (hErr) return next(hErr);
db.query(invHostSql.deleteHid(), [[seq]], (ihErr) => {
if(ihErr) return next(ihErr);
res.json(db.resultMsg('a001', seq));
});
});
});
/* GET Hosts (SELECT ONE) */
router.get('/:seq', (req, res, next) => {
const seq = req.params.seq ? addslashes(req.params.seq) : "";
db.query(hostSql.getOneRow(), [seq], (err, rows) => {
if (err) return next(err);
res.json(db.resultMsg('a001', rows.rows));
});
});
/* GET Hosts listing. */
router.get('/', (req, res, next) => {
let data = {};
let page = req.query.page ? addslashes(req.query.page) : "";
let pageSize = req.query.pageSize ? addslashes(req.query.pageSize) : "";
let name = req.query.name ? addslashes(req.query.name) : "";
if (page == "" || page < 1) {
page = 1;
}
if (pageSize == "" || pageSize < 1) {
pageSize = 15;
}
const start = (page - 1) * pageSize;
db.query(hostSql.getList(name), [pageSize, start], (err, rows) => {
if (err) return next(err);
totalCount(name).then((result) => {
data['rowCount'] = rows.rowCount;
data['totalCount'] = result;
data['page'] = page;
data['pageSize'] = pageSize;
data['list'] = rows.rows;
res.json(db.resultMsg('a001', data));
}).catch((err) => {
if (err) console.error(err);
});
});
});
/* Get Modal Inventory Listing */
router.get('/joinedIventory', (req, res, next) => {
let data = {};
let page = req.query.page ? addslashes(req.query.page) : "";
let pageSize = req.query.pageSize ? addslashes(req.query.pageSize) : "";
let hid = req.query.hid ? addslashes(req.query.hid) : "";
if (page == "" || page < 1) {
page = 1;
}
if (pageSize == "" || pageSize < 1) {
pageSize = 15;
}
const start = (page - 1) * pageSize;
db.query(hostSql.joinedIventory(), [hid, pageSize, start], (err, rows) => {
if (err) return next(err);
totalCount(req).then((result) => {
data['rowCount'] = rows.rowCount;
data['totalCount'] = result;
data['page'] = vpage;
data['pageSize'] = vpageSize
data['list'] = rows.rows;
res.json(db.resultMsg('a001', data));
}).catch((err) => {
if (err) console.error(err);
});
});
});
/* Get Modal Inventory Listing */
router.get('/joinedHid', (req, res, next) => {
let data = {};
let iid = req.query.iid ? addslashes(req.query.iid) : "";
if (page == "" || page < 1) {
page = 1;
}
if (pageSize == "" || pageSize < 1) {
pageSize = 15;
}
const start = (page - 1) * pageSize;
db.query(hostSql.joinHid, [iid, pageSize, start], (err, rows) => {
if (err) return next(err);
totalCount(req).then((result) => {
data['rowCount'] = rows.rowCount;
data['totalCount'] = result;
data['page'] = vpage;
data['pageSize'] = vpageSize
data['list'] = rows.rows;
res.json(db.resultMsg('a001', data));
}).catch((err) => {
if (err) console.error(err);
});
});
});
function totalCount(name) {
let vdata = {};
return new Promise((resolve, reject) => {
db.query(hostSql.totalCount(name), [], (err, rows) => {
if (err) return reject(err);
resolve(rows.rows[0].total);
});
});
}
function getHidSeq() {
return new Promise((resolve, reject) => {
db.query(hostSql.getHidSeq(), [], (err, rows) => {
if (err) return reject(err);
resolve(rows.rows[0].nextval);
});
});
}
function delJoinedHost(hid) {
return new Promise((resolve, reject) => {
db.query(invHostSql.deleteIid(), [iid], (err, rows) => {
if (err) return reject(err);
resolve(rows);
});
});
}
module.exports = router;