Complete backend
This commit is contained in:
22
api/models/citiesModel.js
Normal file
22
api/models/citiesModel.js
Normal 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()
|
||||
// }
|
||||
16
api/models/countriesModel.js
Normal file
16
api/models/countriesModel.js
Normal 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
9
api/models/roadsModel.js
Normal file
@@ -0,0 +1,9 @@
|
||||
const db = require('../../data/dbConfig');
|
||||
|
||||
module.exports = {
|
||||
getRoads
|
||||
};
|
||||
|
||||
function getRoads() {
|
||||
return db('roads')
|
||||
}
|
||||
14
api/routes/citiesRouter.js
Normal file
14
api/routes/citiesRouter.js
Normal 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;
|
||||
14
api/routes/countriesRouter.js
Normal file
14
api/routes/countriesRouter.js
Normal 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
40
api/routes/pathRouter.js
Normal 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
13
api/routes/roadsRouter.js
Normal 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;
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user