From 4de1118804d6a44506e56e3ffc274ec34a972001 Mon Sep 17 00:00:00 2001 From: GEgorov Date: Sat, 29 Nov 2025 16:11:42 +0300 Subject: [PATCH] modified: backend/check_endpoints.js modified: backend/src/services/SqlExecutor.ts --- backend/check_endpoints.js | 54 +++++++++++++++++++---------- backend/src/services/SqlExecutor.ts | 4 ++- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/backend/check_endpoints.js b/backend/check_endpoints.js index 85159a5..5f2a268 100644 --- a/backend/check_endpoints.js +++ b/backend/check_endpoints.js @@ -1,33 +1,49 @@ const { Client } = require('pg'); -async function checkEndpoints() { +async function testQueries() { + // Подключаемся к целевой БД (emias_pg) const client = new Client({ - host: '192.168.0.150', + host: 'm112-pgkisc-01.ncms-i.ru', port: 5432, - database: 'kis_api_builder_db', - user: 'kis_api_builder', - password: 'kis_api_builder_pass' + database: 'kis', + user: 'XАПИД', + password: 'c4d504412b61b0560d442686dfad27' }); await client.connect(); + console.log('Connected to kis database'); - const query = ` - SELECT - e.path, - e.script_queries::text as script_queries - FROM endpoints e - WHERE e.path IN ('/hosp/updateHospData', '/apitesttest') - `; + const caseId = 'f580b03b-86ee-41b6-a697-1981f116c669'; - const result = await client.query(query); + // Запрос из проблемного эндпоинта (с табами) + const queryWithTabs = `SELECT\tea.c_uid a_uid, +\tp.ehr_id ehrid, +\tp.erz_number subjectid, +\tp.namespace namespace + FROM \tmm.ehr_case ec +\tINNER JOIN mm.ehr_case_action ea ON ec.last_action_id = ea.id +\tINNER JOIN mm.hospdoc hd ON hd.ehr_case_id = ec.id +\tINNER JOIN mm.mdoc md ON md.id = hd.mdoc_id +\tINNER JOIN mm.people p ON p.id = md.people_id + WHERE\tec.id = $1 + AND\thd.location_status_id = 1`; - for (const row of result.rows) { - console.log('\n========================================'); - console.log('PATH:', row.path); - console.log('SCRIPT_QUERIES:', row.script_queries); - } + // Запрос из рабочего эндпоинта (с пробелами и CRLF) + const queryWithSpaces = `SELECT ea.c_uid a_uid,\r\n p.ehr_id ehrid,\r\n p.erz_number subjectid,\r\n p.namespace namespace\r\n FROM mm.ehr_case ec\r\n INNER JOIN mm.ehr_case_action ea ON ec.last_action_id = ea.id\r\n INNER JOIN mm.hospdoc hd ON hd.ehr_case_id = ec.id\r\n INNER JOIN mm.mdoc md ON md.id = hd.mdoc_id\r\n INNER JOIN mm.people p ON p.id = md.people_id\r\n WHERE ec.id = $1\r\n AND hd.location_status_id = 1`; + + console.log('\n=== Query with TABS (problematic) ==='); + console.log('HEX first 50:', Buffer.from(queryWithTabs.substring(0, 50)).toString('hex')); + const result1 = await client.query(queryWithTabs, [caseId]); + console.log('rowCount:', result1.rowCount); + console.log('rows:', JSON.stringify(result1.rows)); + + console.log('\n=== Query with SPACES (working) ==='); + console.log('HEX first 50:', Buffer.from(queryWithSpaces.substring(0, 50)).toString('hex')); + const result2 = await client.query(queryWithSpaces, [caseId]); + console.log('rowCount:', result2.rowCount); + console.log('rows:', JSON.stringify(result2.rows)); await client.end(); } -checkEndpoints().catch(console.error); +testQueries().catch(console.error); diff --git a/backend/src/services/SqlExecutor.ts b/backend/src/services/SqlExecutor.ts index d01d6f3..a3d3107 100644 --- a/backend/src/services/SqlExecutor.ts +++ b/backend/src/services/SqlExecutor.ts @@ -48,8 +48,10 @@ export class SqlExecutor { // Log SQL query and parameters before execution console.log('\n[SQL DB]', databaseId); + // @ts-ignore - accessing pool options for debugging + const poolOpts = pool.options; + console.log('[SQL Pool Config] host:', poolOpts?.host, 'database:', poolOpts?.database, 'user:', poolOpts?.user); console.log('[SQL Query]', sqlQuery); - console.log('[SQL Query HEX first 100 chars]', Buffer.from(sqlQuery.substring(0, 100)).toString('hex')); console.log('[SQL Params]', params); // Execute with retry mechanism