Complete backend

This commit is contained in:
2020-02-08 19:59:51 +01:00
parent 06b2078e4d
commit 4379b4d231
19 changed files with 1178 additions and 29 deletions

22
api/models/citiesModel.js Normal file
View File

@@ -0,0 +1,22 @@
const db = require('../../data/dbConfig');
module.exports = {
getCities,
getCitiesByCountry
// getCity,
};
function getCities() {
return db('cities')
}
function getCitiesByCountry(country_id) {
return db('cities')
.where({ country_id })
}
// function getCity(name) {
// return db('cities')
// .where({ name })
// .first()
// }

View File

@@ -0,0 +1,16 @@
const db = require('../../data/dbConfig');
module.exports = {
getCountries,
getCountryByName,
};
function getCountries() {
return db('countries')
}
function getCountryByName(name) {
return db('countries')
.where({ name })
.first()
}

9
api/models/roadsModel.js Normal file
View File

@@ -0,0 +1,9 @@
const db = require('../../data/dbConfig');
module.exports = {
getRoads
};
function getRoads() {
return db('roads')
}

View File

@@ -0,0 +1,14 @@
const router = require('express').Router();
const Cities = require('../models/citiesModel');
router.get('', async (req, res) => {
try {
const cities = await Cities.getCities();
res.status(200).json(cities);
} catch (e) {
res.status(500).json(e);
}
})
module.exports = router;

View File

@@ -0,0 +1,14 @@
const router = require('express').Router();
const Cities = require('../models/citiesModel');
router.get('/:country_id', async (req, res) => {
const { country_id } = req.params;
try {
const cities = await Cities.getCitiesByCountry(country_id);
res.status(200).json(cities);
} catch (e) {
res.status(500).json(e);
}
})
module.exports = router;

40
api/routes/pathRouter.js Normal file
View File

@@ -0,0 +1,40 @@
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.body;
try {
const cities = await Cities.getCities();
const roads = await Roads.getRoads();
let { path, distance } = searchPath(cities, roads, start_city_id, end_city_id);
const formatedPath = formatPath(path, cities)
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;

13
api/routes/roadsRouter.js Normal file
View File

@@ -0,0 +1,13 @@
const router = require('express').Router();
const Roads = require('../models/roadsModel');
router.get('', async (req, res) => {
try {
const roads = await Roads.getRoads();
res.status(200).json(roads);
} catch (e) {
res.status(500).json(e);
}
})
module.exports = router;

View File

@@ -1,17 +1,18 @@
const express = require("express");
// const authRouter = require('../services/auth/authRouter');
// const usersRouter = require('../services/users/usersRouter');
// const sessionsRouter = require('../services/sessions/sessionsRouter');
// const dailyAveragesRouter = require('../services/dailyAverages/dailyAveragesRouter');
const citiesRouter = require('./routes/citiesRouter');
const roadsRouter = require('./routes/roadsRouter');
const countriesRouter = require('./routes/countriesRouter');
const pathRouter = require('./routes/pathRouter')
const server = express();
server.use(express.json());
// server.use('/api/auth', authRouter);
// server.use('/api/users', authenticate, usersRouter);
// server.use('/api/users', authenticate, sessionsRouter);
// server.use('/api/users', authenticate, dailyAveragesRouter);
server.use('/api/cities', citiesRouter);
server.use('/api/roads', roadsRouter);
server.use('/api/countries', countriesRouter);
server.use('/api/path', pathRouter);
module.exports = server;