feat: initialize microservice architecture with auth, api, realtime, copernicus, ml, and console modules

This commit is contained in:
Giuseppe Raffa
2026-03-28 15:29:34 +01:00
commit bcfce32adb
89 changed files with 12025 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
const router = require('express').Router();
const crypto = require('crypto');
const { query } = require('../storage/postgres');
const sets = ['forecasts', 'sensors'];
function hashSensorCode(code) {
return crypto.createHash('sha256').update(code).digest('hex');
}
/**
* GET /params/sensor/:sensorCode/active?set=sensors
* Autenticazione tramite SENSOR_CODE (stesso meccanismo di realtime)
*/
router.get('/:sensorCode/active', async (req, res) => {
const { sensorCode } = req.params;
const { set } = req.query;
if (!set || !sets.includes(set))
return res.status(400).json({ error: 'SET parameter invalid' });
try {
const hashed = hashSensorCode(sensorCode);
const sensor = await query(
'SELECT id, is_active FROM sensors WHERE code_hash = $1',
[hashed],
'sensors'
);
if (!sensor.rows[0]) {
return res.status(401).json({ error: 'Sensor code not valid' });
}
if (!sensor.rows[0].is_active) {
return res.status(403).json({ error: 'Sensor is not active' });
}
const result = await query(
`SELECT * FROM ${set} WHERE active = true LIMIT 1`,
[],
'references'
);
res.json(result.rows[0] || null);
} catch (err) {
console.error('[PARAMS/SENSOR] Error:', err.message);
res.status(500).json({ error: 'Internal server error' });
}
});
module.exports = router;