Files
OLD-server-architecture/realtime/src/store/db.js

64 lines
1.6 KiB
JavaScript

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 };