From a0295a160cde517f57a3401a6e793a74159b0d6f Mon Sep 17 00:00:00 2001 From: x2Skyz Date: Mon, 17 Nov 2025 15:38:58 +0700 Subject: [PATCH] =?UTF-8?q?--=E0=B8=A3=E0=B8=B0=E0=B8=9A=E0=B8=9A=20?= =?UTF-8?q?=E0=B8=97=E0=B8=B5=E0=B9=88=E0=B8=AA=E0=B8=A1=E0=B8=9A=E0=B8=B9?= =?UTF-8?q?=E0=B8=A3=E0=B8=82=E0=B8=AD=E0=B8=87=20search=20column=20?= =?UTF-8?q?=E0=B9=81=E0=B8=A5=E0=B8=B0=20condition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/controllers/budgetSearchController.js | 7 +++++-- .../src/services/budgetSearchService.js | 5 +++-- exthernal-ttc-api/src/share/generalservice.js | 12 ++++++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/exthernal-ttc-api/src/controllers/budgetSearchController.js b/exthernal-ttc-api/src/controllers/budgetSearchController.js index 88255d0..cd2b614 100644 --- a/exthernal-ttc-api/src/controllers/budgetSearchController.js +++ b/exthernal-ttc-api/src/controllers/budgetSearchController.js @@ -22,6 +22,7 @@ export class budgetSearch { async onBudgetSearch(req, res, database) { let idx = -1 let aryResult = [] + let condition = {} try { // let username = req.body.request.username; // let password = req.body.request.password; @@ -35,16 +36,18 @@ export class budgetSearch { var column = "" if(columnParams == 'edit'){ column = `bdgseq, bdgnam, bdgcod, bdgttl` + condition['bdgseq'] = req.body.request.bdgseq } else if(columnParams == 'result' || columnParams == undefined || columnParams == ''){ column = `bdgnam, bdgttl` } - aryResult = await this.budgetSearchService.getBudgetSearch(database, id, column); + + aryResult = await this.budgetSearchService.getBudgetSearch(database, id, column, condition); } catch (error) { idx = 1; } finally { if (idx === 1) return sendError('เกิดข้อผิดพลาดไม่คาดคิดเกิดขึ้น', 'Unexpected error'); - if (!aryResult) return sendError('ไม่พบการมีอยู่ของข้อมูล', 'Cannot Find Any Data'); + if (aryResult == 0) return sendError('ไม่พบการมีอยู่ของข้อมูล', 'Cannot Find Any Data'); return aryResult } } diff --git a/exthernal-ttc-api/src/services/budgetSearchService.js b/exthernal-ttc-api/src/services/budgetSearchService.js index aec7771..0b99555 100644 --- a/exthernal-ttc-api/src/services/budgetSearchService.js +++ b/exthernal-ttc-api/src/services/budgetSearchService.js @@ -6,14 +6,15 @@ export class BudgetSearchService { this.generalService = new GeneralService() } - async getBudgetSearch(database, id, column) { + async getBudgetSearch(database, id, column, condition) { const sql = ` SELECT ${column} FROM ${database}.bdgmst + WHERE 1=1 ` const params = [] - const result = await this.generalService.executeQueryParam(database, sql, params); + const result = await this.generalService.executeQueryConditions(database, sql, condition); return result } } diff --git a/exthernal-ttc-api/src/share/generalservice.js b/exthernal-ttc-api/src/share/generalservice.js index c2cada3..c543870 100644 --- a/exthernal-ttc-api/src/share/generalservice.js +++ b/exthernal-ttc-api/src/share/generalservice.js @@ -54,7 +54,9 @@ export class GeneralService { for (const [key, value] of Object.entries(conditions)) { if (value === undefined || value === null || value === '') continue + const match = String(value).match(/^(ILIKE|LIKE)\s+(.+)$/i) + if (match) { const operator = match[1].toUpperCase() const pattern = match[2].trim() @@ -69,6 +71,7 @@ export class GeneralService { let finalQuery = baseQuery if (whereClauses.length > 0) finalQuery += ' AND ' + whereClauses.join(' AND ') + const formattedSQL = finalQuery.replace(/\${database}/g, database) try { @@ -77,15 +80,20 @@ export class GeneralService { sql: formattedSQL, params }) + const result = await connection.query(formattedSQL, params) + this.devhint(2, 'executeQueryConditions', `✅ Query Success (${result.rowCount} rows)`) - return result.rows + + return result.rows + } catch (err) { this.devhint(1, 'executeQueryConditions', `❌ SQL Error`, err.message) console.error('🧨 SQL Error:', err.message) - throw new Error(`SQL_EXECUTION_FAILED::${err.message}`) // ✅ “เจ๊งจริง” ส่งถึง controller แน่นอน + throw new Error(`SQL_EXECUTION_FAILED::${err.message}`) } } + } // =================================================== // Export สำหรับ controller หรืออื่นๆ เรียกใช้ได้ด้วย