diff --git a/adapter/sapaccountadapter.js b/adapter/sapaccountadapter.js index e731935..f4e9741 100644 --- a/adapter/sapaccountadapter.js +++ b/adapter/sapaccountadapter.js @@ -7,21 +7,25 @@ class SAPAccountAdapter extends Adapter { } /* ================= LIST ================= */ + /* ================= LIST + PAGINATION ================= */ async queryList(req, callback) { var apires = this.getApiResultDefined(); try { + let limit = parseInt(req.query.limit) || 10; + let offset = parseInt(req.query.offset) || 0; let keyword = req.query.keyword || ""; + + /* ===== QUERY TOTAL ROW ===== */ let qry = ` - SELECT * - FROM tbl_sap_connections - WHERE deleted_at IS NULL - AND ( - host LIKE '%${keyword}%' - OR sap_user LIKE '%${keyword}%' - OR ket_sap LIKE '%${keyword}%' - ) - ORDER BY id ASC - `; + SELECT * + FROM tbl_sap_connections + WHERE deleted_at IS NULL + AND ( + host LIKE '%${keyword}%' + OR sap_user LIKE '%${keyword}%' + OR ket_sap LIKE '%${keyword}%' + ) + `; db.query(qry, [], function (err, result) { if (err) { @@ -29,9 +33,49 @@ class SAPAccountAdapter extends Adapter { apires.meta.message = err.toString(); callback("err", apires); } else { - apires.success = true; - apires.data = result; - callback(null, apires); + if (result.length > 0) { + let pagination = result.length / limit; + if (!Number.isInteger(pagination)) { + pagination = Math.floor(result.length / limit) + 1; + } + + apires.success = true; + apires.data.push({ + totalpage: pagination, + totalrows: result.length, + }); + + /* ===== QUERY DATA WITH LIMIT ===== */ + let qryData = ` + SELECT * + FROM tbl_sap_connections + WHERE deleted_at IS NULL + AND ( + host LIKE '%${keyword}%' + OR sap_user LIKE '%${keyword}%' + OR ket_sap LIKE '%${keyword}%' + ) + ORDER BY id ASC + LIMIT ${offset}, ${limit} + `; + + db.query(qryData, [], function (err, resultData) { + if (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("err", apires); + } else { + apires.data.push({ + results: JSON.parse(JSON.stringify(resultData)), + }); + callback(null, apires); + } + }); + } else { + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + callback(null, apires); + } } }); } catch (err) { @@ -164,6 +208,44 @@ class SAPAccountAdapter extends Adapter { callback("error", apires); } } + + /* ================= DETAIL ================= */ + async queryDetail(req, callback) { + var apires = this.getApiResultDefined(); + try { + const id = req.params.id; + + let qry = ` + SELECT * + FROM tbl_sap_connections + WHERE id = ? + AND deleted_at IS NULL + LIMIT 1 + `; + + db.query(qry, [id], function (err, result) { + if (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("err", apires); + } else { + if (result.length > 0) { + apires.success = true; + apires.data = result[0]; + } else { + apires.meta.code = 200; + apires.meta.message = "Record Not Found"; + apires.data = null; + } + callback(null, apires); + } + }); + } catch (err) { + apires.meta.code = 500; + apires.meta.message = err.toString(); + callback("error", apires); + } + } } module.exports = SAPAccountAdapter; diff --git a/controllers/sap_account.js b/controllers/sap_account.js index a20fb2c..8fb8a24 100644 --- a/controllers/sap_account.js +++ b/controllers/sap_account.js @@ -63,3 +63,19 @@ exports.delete = (req, res) => { sapaccountadapter.sendResponse(502, apireshandler, res); } }; + +/* ================= DETAIL ================= */ +exports.detail = (req, res) => { + try { + sapaccountadapter.queryDetail(req, function (err, data) { + let statusCode = data != null ? data.meta.code : 200; + if (err) statusCode = 500; + sapaccountadapter.sendResponse(statusCode, data, res); + }); + } catch (err) { + apireshandler.meta.code = 502; + apireshandler.meta.message = + " [24] : SAP Account detail, " + err.toString(); + sapaccountadapter.sendResponse(502, apireshandler, res); + } +}; \ No newline at end of file diff --git a/routes/sap.js b/routes/sap.js index c068039..1e0ec73 100644 --- a/routes/sap.js +++ b/routes/sap.js @@ -7,5 +7,6 @@ router.get("/list", [jwtauth], sapcontroller.list); router.post("/create", [jwtauth], sapcontroller.create); router.put("/update/:id", [jwtauth], sapcontroller.update); router.delete("/delete/:id", [jwtauth], sapcontroller.delete); +router.get("/detail/:id", [jwtauth], sapcontroller.detail); module.exports = router;