From b1feffe39e2da7ac7277ae32bcd9d0c851db8ae2 Mon Sep 17 00:00:00 2001 From: Antony Kurniawan Date: Thu, 16 Oct 2025 13:12:57 +0700 Subject: [PATCH] fix: device.db.js --- db/device.db.js | 68 +++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/db/device.db.js b/db/device.db.js index c5373a7..366963d 100644 --- a/db/device.db.js +++ b/db/device.db.js @@ -2,29 +2,36 @@ const pool = require("../config"); // Get all devices const getAllDevicesDb = async (searchParams = {}) => { - queryParams = []; + let queryParams = []; + + // Pagination if (searchParams.limit) { const page = Number(searchParams.page ?? 1) - 1; queryParams = [Number(searchParams.limit ?? 10), page]; } + // Search const { whereOrConditions, whereParamOr } = pool.buildStringOrIlike( - ["a.device_code", "a.device_location", "a.ip_address", "b.brand_name"], + [ + "a.device_name", + "a.device_code", + "a.device_location", + "a.ip_address", + "b.brand_name", + ], searchParams.criteria, queryParams ); queryParams = whereParamOr ? whereParamOr : queryParams; + // Filter const { whereConditions, whereParamAnd } = pool.buildFilterQuery( [ { column: "a.device_code", param: searchParams.code, type: "string" }, - { - column: "a.device_location", - param: searchParams.location, - type: "string", - }, + { column: "a.device_location", param: searchParams.location, type: "string" }, { column: "b.brand_name", param: searchParams.brand, type: "string" }, + { column: "a.device_status", param: searchParams.status, type: "string" }, ], queryParams ); @@ -32,46 +39,48 @@ const getAllDevicesDb = async (searchParams = {}) => { queryParams = whereParamAnd ? whereParamAnd : queryParams; const queryText = ` - SELECT COUNT(*) OVER() AS total_data, - a.device_id, - 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 + SELECT + COUNT(*) OVER() AS total_data, + a.device_id, + a.device_code, + a.device_name, + 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, + b.brand_id, + 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; - // Mengembalikan data dan total. return { data: result.recordset, total }; }; + const getDeviceByIdDb = async (id) => { const queryText = ` SELECT - a.device_id, + a.device_id, + a.device_name, a.device_status, a.device_location, a.device_description, @@ -82,7 +91,6 @@ const getDeviceByIdDb = async (id) => { 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