160 lines
5.5 KiB
JavaScript
160 lines
5.5 KiB
JavaScript
|
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;
|