query migliorata
This commit is contained in:
@@ -44,39 +44,48 @@ app.get('/test', (req, res) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Endpoint per eseguire query
|
// Endpoint per eseguire query
|
||||||
|
const sql = require('mssql');
|
||||||
|
|
||||||
app.post('/query', async (req, res) => {
|
app.post('/query', async (req, res) => {
|
||||||
|
let retry = false;
|
||||||
try {
|
try {
|
||||||
console.log('Connect con config...')
|
|
||||||
await sql.connect(config);
|
if (!req.body.query || typeof req.body.query !== 'string') {
|
||||||
console.log('query...', req.body.query)
|
return res.status(400).json({ error: 'Query non valida' });
|
||||||
const result = await sql.query(req.body.query);
|
|
||||||
console.log(' ... tornato');
|
|
||||||
if (result) {
|
|
||||||
console.log('Risultato:', result.recordset);
|
|
||||||
res.json(result.recordset);
|
|
||||||
} else {
|
|
||||||
res.json({});
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
// se err.messagge === 'socket hang up' allora attendi 2 secondi e richiama sql.query
|
|
||||||
if (err.message.trim() === 'socket hang up') {
|
|
||||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
||||||
const result = await sql.query(req.body.query);
|
|
||||||
console.log(' ... tornato');
|
|
||||||
if (result) {
|
|
||||||
console.log('Risultato:', result.recordset);
|
|
||||||
res.json(result.recordset);
|
|
||||||
} else {
|
|
||||||
res.json({});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.error('Error...', err.message)
|
|
||||||
res.status(500).json({ error: err.message });
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
sql.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('Connect con config...');
|
||||||
|
await sql.connect(config);
|
||||||
|
|
||||||
|
const doQuery = async () => {
|
||||||
|
console.log('Eseguo query:', req.body.query);
|
||||||
|
const result = await sql.query(req.body.query);
|
||||||
|
console.log('Query completata');
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
let result;
|
||||||
|
|
||||||
|
try {
|
||||||
|
result = await doQuery();
|
||||||
|
} catch (err) {
|
||||||
|
if (err.message.trim() === 'socket hang up' && !retry) {
|
||||||
|
console.warn('⚠️ socket hang up — attendo 5 secondi e riprovo...');
|
||||||
|
retry = true;
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 5000));
|
||||||
|
result = await doQuery();
|
||||||
|
} else {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(result?.recordset || {});
|
||||||
|
} catch (err) {
|
||||||
|
console.error('❌ Errore nella query:', err.message);
|
||||||
|
res.status(500).json({ error: err.message });
|
||||||
|
} finally {
|
||||||
|
sql.close(); // chiude anche se fallisce
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const PORT = process.env.SERVER_PORT || 3000;
|
const PORT = process.env.SERVER_PORT || 3000;
|
||||||
|
|||||||
Reference in New Issue
Block a user