const axios = require('axios'); const WebSocket = require('ws'); const iconv = require('iconv-lite'); const logger = require('../logger') exports.checkDb = async (req, res) => { let adminToDbStatus = { status: 'offline', message: 'Test not performed' }; try { const dbConfig = { user: process.env.DB_USER, password: process.env.DB_PASSWORD, server: process.env.DB_SERVER, database: process.env.DB_NAME, options: { encrypt: false, trustServerCertificate: true }, pool: { max: 1, min: 0, idleTimeoutMillis: 5000 }, requestTimeout: 5000 }; const pool = new sql.ConnectionPool(dbConfig); await pool.connect(); await pool.query`SELECT 1`; adminToDbStatus = { status: 'online', message: 'Прямое подключение успешно' }; await pool.close(); } catch (error) { adminToDbStatus = { status: 'offline', message: `Ошибка прямого подключения: ${error.message}` }; } let backendToDbStatus = { status: 'offline', message: 'Test not performed' }; try { const response = await axios.get(`${process.env.BACKEND_URL}/api/db-status`, { timeout: 3000 }); if (response.data.status === 'ok') { backendToDbStatus = { status: 'online', message: 'Бэкенд успешно подключен' }; } else { backendToDbStatus = { status: 'offline', message: 'Бэкенд сообщил об ошибке' }; } } catch (error) { backendToDbStatus = { status: 'offline', message: 'Не удалось связаться с бэкендом' }; } res.json({ adminToDb: adminToDbStatus, backendToDb: backendToDbStatus }); }; exports.checkStatus = async (req, res) => { try { await axios.get(`${process.env.BACKEND_URL}/api/test`, { timeout: 2000 }); res.json({ status: 'online' }); } catch (error) { res.json({ status: 'offline' }); } };