feat: initialize microservice architecture with auth, api, realtime, copernicus, ml, and console modules
This commit is contained in:
51
api/src/routes/params.sensor.js
Normal file
51
api/src/routes/params.sensor.js
Normal 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;
|
||||
Reference in New Issue
Block a user