oldtimer/routes/api.js

160 lines
5.5 KiB
JavaScript
Raw Permalink Normal View History

2023-10-10 07:15:19 +00:00
var express = require('express');
var router = express.Router();
const fs = require('fs');
const path = require('path');
/* GET nem elérhető autók listája. */
router.get('/nemelerheto', function (req, res, next) {
console.log("Api hívás érkezett: /nemelerheto api kérés érkezett a Frontendtől");
res.send(JSON.stringify(
{
nemElerhetoAutok: 'Ferrari Spider 1992, Moszkvics 408'
}
))
});
/* Vélemény bejegyzések kezelése */
let velemenyekJsonPath = path.join(__dirname, '../assets/velemenyek.json');
var velemenyek = [];
initializeVelemenyek(velemenyekJsonPath);
function initializeVelemenyek(path) {
try {
velemenyek = require(path);
} catch (e) {
console.log("Még nincs érvényes véleményeket tartalmazó fájl.")
}
}
/* POST velemeny */
router.post('/velemeny', function (req, res, next) {
console.log("Api hívás érkezett: vásárlói vélemény rögzítése: ", req.body);
velemenyek.push({
"velemeny": req.body.velemeny,
"date": new Date().toLocaleString()
});
fs.writeFileSync(velemenyekJsonPath, JSON.stringify(velemenyek));
res.send(JSON.stringify(req.body));
});
/* GET velemeny */
router.get('/velemeny', function (req, res, next) {
console.log("Api hívás érkezett: vásárlói vélemény lekérdezése.");
if (velemenyek.length === 0) {
res.send(JSON.stringify(
[{
"velemeny": "Még nem érkezett felhasználói bejegyzés.",
"date": null
}]
));
} else {
res.send(JSON.stringify(velemenyek));
}
});
router.delete('/velemeny', function (req, res, next) {
console.log("Api hívás érkezett: vásárlói vélemények törlése.");
try{
velemenyek = [];
fs.unlinkSync(velemenyekJsonPath, JSON.stringify(velemenyek));
res.send(JSON.stringify({'message':'Törlés sikeres'}));
} catch (e) {
res.send(JSON.stringify({'message':'Nem történt törlés, mert a fájl nem létezik (még).'}));
}
});
// Admin eszközök
var mysql = require('mysql');
var sqlTasks = require('../assets/sqlTasks.json');
var db = {
host: 'localhost',
user: 'root',
password: '',
database: 'oldtimer'
};
const getSqlTasks = require('../assets/sqlTasks');
const databaseQuery = sqlQuery => {
return new Promise((resolve, reject) => {
const connection = mysql.createConnection(db);
connection.connect();
if (sqlQuery !== 'select version();') {
console.log('sqlQuery futtatása:', sqlQuery);
}
connection.query(sqlQuery, (error, lines, fields) => {
if (error) reject(error);
resolve(lines);
connection.end();
})
})
};
/* GET sqlTasks */
router.get('/sqltasks', function (req, res, next) {
res.send(JSON.stringify(sqlTasks))
});
/* fech data from database */
router.get('/lekerdezes/:id', function (req, res, next) {
getSqlTasks().then(result => {
console.log("API hívás érkezett: lekérdezés futtatása:", req.params['id'], ' sorszámmal.');
const sqlTasks = result;
const sqlTaskById = sqlTasks.filter(task => task.id == req.params.id);
if (sqlTaskById) {
sqlTask = sqlTaskById[0];
if (sqlTask.sql) {
databaseQuery(sqlTask.sql)
.then(result => {
res.send(JSON.stringify(result))
})
.catch(error => {
console.error("Hiba történt az SQL parancs végrehajtása során:", error.sqlMessage ? error.sqlMessage : error.code);
res.status(error.status || 500);
if (error.code && error.code === "ER_BAD_DB_ERROR") {
console.error("Még nincsen létrehozva a feladathoz szükséges adatbázis!");
res.send(JSON.stringify({error: error.code}))
} else if (error.code && error.code === "ER_NO_SUCH_TABLE") {
console.error("Még nincsen létrehozva a feladathoz tartozó tábla!");
res.send(JSON.stringify({error: error.code}))
} else if (error.code && error.code === "ECONNREFUSED") {
console.error("Nem sikerült a MySQL adatbázis szerverhez kapcsolódni.");
res.send(JSON.stringify({error: error.code}))
} else if (error.sqlMessage) {
console.log(error.sqlMessage);
res.send(JSON.stringify({error: error.sqlMessage}))
} else {
console.log(JSON.stringify(error));
res.send(JSON.stringify({error: 'Ismeretlen eredetű hiba!'}))
}
})
} else {
console.log("Ehhez a feladathoz még nem szerepel SQL lekérdezés a beadandó fájlban.");
res.send(JSON.stringify({empty: true}))
}
}
})
});
/* GET server status monitoring */
router.get('/serverStatus', function (req, res, next) {
res.send(JSON.stringify({alive: true}))
});
/* GET SQL status monitoring */
router.get('/mysqlStatus', function (req, res, next) {
databaseQuery('select version();')
.then(result => {
res.send({alive: true})
})
.catch(error => {
res.send({alive: false})
})
});
module.exports = router;