- Created a new CSS file for kiosk styles, defining variables, typography, and layout for cards and toolbars. - Implemented new routes for data anlaysis page
81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
const { Pool } = require('pg');
|
|
|
|
const baseConfig = {
|
|
user: process.env.DB_USER || 'meb',
|
|
password: process.env.DB_PSW,
|
|
host: process.env.DB_HOST || 'meb-postgres',
|
|
port: process.env.DB_PORT || 5432,
|
|
max: 10,
|
|
idleTimeoutMillis: 30000,
|
|
connectionTimeoutMillis: 5000,
|
|
};
|
|
|
|
const dbs = {
|
|
data: { name: 'data' },
|
|
sensors: { name: 'sensors' },
|
|
kiosk: { name: 'kiosk' },
|
|
}
|
|
|
|
const pools = {};
|
|
|
|
function getPool(db) {
|
|
const dbConfig = dbs[db];
|
|
if (!dbConfig) throw new Error(`Database ${db} not configured`);
|
|
if (!pools[db]) {
|
|
pools[db] = new Pool({ ...baseConfig, database: dbConfig.name });
|
|
}
|
|
return pools[db];
|
|
}
|
|
|
|
async function checkConnection(db) {
|
|
try {
|
|
await getPool(db).query('SELECT NOW()');
|
|
return true;
|
|
} catch (err) {
|
|
console.error(`Error connecting to ${db} database`, err.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
async function query(db, text, params) {
|
|
const pool = getPool(db);
|
|
return pool.query(text, params);
|
|
}
|
|
|
|
async function init() {
|
|
try {
|
|
// Tabella sensori
|
|
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()
|
|
);
|
|
`);
|
|
|
|
// Tabella sessioni: mappa session_id (tag InfluxDB) a metadati custom
|
|
await query('sensors', `
|
|
CREATE TABLE IF NOT EXISTS sessiondataref (
|
|
id SERIAL PRIMARY KEY,
|
|
session_id VARCHAR(32) UNIQUE NOT NULL,
|
|
sensor_name VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255),
|
|
description TEXT,
|
|
tags TEXT[] DEFAULT '{}',
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
disconnected_at TIMESTAMPTZ,
|
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
);
|
|
`);
|
|
|
|
console.log('[DB] Tabelle verificate (sensors, sessiondataref)');
|
|
} catch (err) {
|
|
console.error('[DB] Error creating tables:', err.message);
|
|
}
|
|
}
|
|
|
|
init();
|
|
|
|
module.exports = { checkConnection, query };
|