From 32d25cef6ad8940d021375aaec3c9dc5b98b4641 Mon Sep 17 00:00:00 2001 From: Muhammad Afif Date: Wed, 15 Oct 2025 15:50:56 +0700 Subject: [PATCH] repair device db: device code - device name --- db/device.db.js | 103 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 70 insertions(+), 33 deletions(-) diff --git a/db/device.db.js b/db/device.db.js index 3d770ec..4c429bb 100644 --- a/db/device.db.js +++ b/db/device.db.js @@ -2,46 +2,66 @@ const pool = require("../config"); // Get all devices const getAllDevicesDb = async (searchParams = {}) => { - - queryParams = [] + queryParams = []; if (searchParams.limit) { - const page = Number(searchParams.page ?? 1) - 1 + const page = Number(searchParams.page ?? 1) - 1; queryParams = [Number(searchParams.limit ?? 10), page]; } - const { whereOrConditions, whereParamOr } = pool.buildStringOrIlike([ - "a.device_name", - "a.device_code", - "a.device_location", - "a.ip_address", - "b.brand_name" - ], searchParams.criteria, queryParams); + const { whereOrConditions, whereParamOr } = pool.buildStringOrIlike( + ["a.device_code", "a.device_location", "a.ip_address", "b.brand_name"], + searchParams.criteria, + queryParams + ); - queryParams = whereParamOr ? whereParamOr : queryParams + queryParams = whereParamOr ? whereParamOr : queryParams; - const { whereConditions, whereParamAnd } = pool.buildFilterQuery([ - { column: "a.device_name", param: searchParams.name, type: "string" }, - { column: "a.device_code", param: searchParams.code, type: "string" }, - { column: "a.device_location", param: searchParams.location, type: "string" }, - { column: "b.brand_name", param: searchParams.brand, type: "string" }, - ], queryParams); + const { whereConditions, whereParamAnd } = pool.buildFilterQuery( + [ + { column: "a.device_code", param: searchParams.code, type: "string" }, + { + column: "a.device_location", + param: searchParams.location, + type: "string", + }, + { column: "b.brand_name", param: searchParams.brand, type: "string" }, + ], + queryParams + ); - queryParams = whereParamAnd ? whereParamAnd : queryParams + queryParams = whereParamAnd ? whereParamAnd : queryParams; const queryText = ` - SELECT COUNT(*) OVER() AS total_data, a.*, b.brand_name + SELECT COUNT(*) OVER() AS total_data, + a.device_status, + a.device_location, + a.device_description, + a.ip_address, + a.created_by, + a.updated_by, + a.deleted_by, + a.created_at, + a.updated_at, + a.deleted_at, + CONCAT(a.device_code, ' - ', a.device_name) AS device_code, + b.brand_name FROM m_device a LEFT JOIN m_brands b ON a.brand_id = b.brand_id WHERE a.deleted_at IS NULL - ${whereConditions.length > 0 ? ` AND ${whereConditions.join(' AND ')}` : ''} - ${whereOrConditions ? whereOrConditions : ''} + ${ + whereConditions.length > 0 ? ` AND ${whereConditions.join(" AND ")}` : "" + } + ${whereOrConditions ? whereOrConditions : ""} ORDER BY a.device_id ASC - ${searchParams.limit ? `OFFSET $2 ROWS FETCH NEXT $1 ROWS ONLY` : ''}; + ${searchParams.limit ? `OFFSET $2 ROWS FETCH NEXT $1 ROWS ONLY` : ""}; `; const result = await pool.query(queryText, queryParams); // Menghitung total data. - const total = result?.recordset.length > 0 ? parseInt(result.recordset[0].total_data, 10) : 0; + const total = + result?.recordset.length > 0 + ? parseInt(result.recordset[0].total_data, 10) + : 0; // Mengembalikan data dan total. return { data: result.recordset, total }; @@ -49,7 +69,19 @@ const getAllDevicesDb = async (searchParams = {}) => { const getDeviceByIdDb = async (id) => { const queryText = ` - SELECT a.*, b.brand_name + SELECT + a.device_status, + a.device_location, + a.device_description, + a.ip_address, + a.created_by, + a.updated_by, + a.deleted_by, + a.created_at, + a.updated_at, + a.deleted_at, + CONCAT(a.device_code, ' - ', a.device_name) AS device_code, + b.brand_name FROM m_device a LEFT JOIN m_brands b ON a.brand_id = b.brand_id WHERE a.device_id = $1 AND a.deleted_at IS NULL @@ -59,32 +91,37 @@ const getDeviceByIdDb = async (id) => { }; const createDeviceDb = async (data) => { - - const newCode = await pool.generateKode("DVC", "m_device", "device_code") + const newCode = await pool.generateKode("DVC", "m_device", "device_code"); const store = { ...data, device_code: newCode, - } + }; - const { query: queryText, values } = pool.buildDynamicInsert("m_device", store); + const { query: queryText, values } = pool.buildDynamicInsert( + "m_device", + store + ); const result = await pool.query(queryText, values); const insertedId = result.recordset[0]?.inserted_id; return insertedId ? await getDeviceByIdDb(insertedId) : null; }; const updateDeviceDb = async (id, data) => { - const store = { - ...data - } + ...data, + }; // Kondisi WHERE const whereData = { - device_id: id + device_id: id, }; - const { query: queryText, values } = pool.buildDynamicUpdate("m_device", store, whereData); + const { query: queryText, values } = pool.buildDynamicUpdate( + "m_device", + store, + whereData + ); await pool.query(`${queryText} AND deleted_at IS NULL`, values); return getDeviceByIdDb(id); };