dijkstra-backend/api/routes/pathRouter.js

47 lines
1.2 KiB
JavaScript

const router = require('express').Router();
const Roads = require('../models/roadsModel');
const Cities = require('../models/citiesModel');
const searchPath = require('../../helpers/dijkstra_algo');
router.get('', async (req, res) => {
const { start_city_id, end_city_id } = req.query;
console.log(typeof start_city_id)
start = Math.floor(start_city_id);
end = Math.floor(end_city_id);
console.log(start, end)
try {
const cities = await Cities.getCities();
const roads = await Roads.getRoads();
let { path, distance } = searchPath(cities, roads, start, end);
const formatedPath = formatPath(path, cities)
console.log(path)
let response = { path: formatedPath, distance }
res.status(200).json(response);
} catch (e) {
res.status(500).json(e);
}
})
function formatPath(path, cities) {
const complete_path = []
for (let path_city of path) {
for (let city of cities) {
if (city.id == path_city) {
complete_path.push({ id: city.id, name: city.name });
}
}
}
return complete_path
}
module.exports = router;