const { Pool } = require('pg'); const pool = new Pool({ user: process.env.DB_USER, password: process.env.DB_PSW, host: process.env.DB_HOST, port: process.env.DB_PORT, max: 10, idleTimeoutMillis: 30000, connectionTimeoutMillis: 5000, }) const dbs = { data: { name: process.env.DATA_DB }, sensors: { name: process.env.SENSORS_DB } } console.log('Database configuration:', { host: process.env.DB_HOST, port: process.env.DB_PORT, user: process.env.DB_USER, password: process.env.DB_PSW, database: Object.fromEntries(Object.entries(dbs).map(([k, v]) => [k, v.name])) }); function getPool(db) { const dbConfig = dbs[db]; if (!dbConfig) throw new Error(`Database ${db} not configured`); return new Pool({ ...pool.options, database: dbConfig.name }); } async function checkConnection(db) { try { await getPool(db).query('SELECT NOW()'); return true; } catch (err) { console.error(`Error connecting to ${db} database`, err); return false; } } async function query(db, text, params) { const pool = getPool(db); return pool.query(text, params); } async function init() { try { await query('sensors', ` CREATE TABLE IF NOT EXISTS sensors ( id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE NOT NULL, code_hash TEXT NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() ); `); } catch (err) { console.error('Error creating sensors table', err); } } init(); module.exports = { checkConnection, query };