Files
OLD-server-architecture/realtime/src/store/db.js
Giuseppe Raffa b6c2a7e904 Add initial KioskCore and API endpoint for data analysis
- Created a new CSS file for kiosk styles, defining variables, typography, and layout for cards and toolbars.
- Implemented new routes for data anlaysis page
2026-04-18 12:32:32 +02:00

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