diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..22dfcb5 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + // Verwendet IntelliSense zum Ermitteln möglicher Attribute. + // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen. + // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "name": "NodeJS: nodemon debug", + "program": "${workspaceFolder}/backend/app.js", + "request": "launch", + "restart": true, + "runtimeExecutable": "nodemon", + "skipFiles": [ + "/**" + ], + "type": "node", + "envFile": "${workspaceFolder}/backend/.env", + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index d5aebb6..6dcc2b2 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Campus Cup AKMC Data Traveloptimizer - import `setup.sql` for sample data ### Start + - If you run for the first time: `$(cd backend && npm i)` - Run `$(cd backend && npm run start)` - call http://localhost:3000/v1/update/climate to fetch climate data for sample entries. @@ -26,6 +27,10 @@ Campus Cup AKMC Data Traveloptimizer - sunhours=NUMBER,NUMBER - percipitation=NUMBER,NUMBER +Alternatively: + - q= + - q supports all params from above but values are passed as array. + __Examples:__ http://localhost:3000/v1/search?from=2020-06-14&to=2020-07-29&temperature=27,29&raindays=8,12&sunhours=250,300 http://localhost:3000/v1/search?from=2020-06-14&to=2020-07-29 diff --git a/backend/app.js b/backend/app.js index 150213e..47063cb 100644 --- a/backend/app.js +++ b/backend/app.js @@ -28,12 +28,18 @@ const samplePresets = [ app.get('/', (req, res) => res.send('Hello Timo!')) app.get('/v1/regions', (req, res) => getAllRegions().then(x => res.json({ data: x }))) +app.get('/v1/countries', (req, res) => getAllCountries().then(x => res.json({ data: x }))) app.get('/v1/presets', (req, res) => res.json({ data: samplePresets})) app.get('/v1/search', searchHandler) app.get('/v1/update/climate', climateUpdateHandler) +app.get('/v1/regions/:id/image', regionImageHandler) app.listen(port, () => console.log(`Travopti backend listening at http://localhost:${port}`)) +function regionImageHandler(req, res) { + res.sendFile(__dirname+`/data/regions/images/${req.params.id}.jpg`) +} + function climateUpdateHandler(req, res) { let parameter = [] if (req.query.startDate) parameter.push(req.query.startDate) @@ -238,6 +244,14 @@ function getAllRegions() { return getQueryRows(sql) } +function getAllCountries() { + const sql = `SELECT + id AS id, + country AS name, + FROM countries` + return getQueryRows(sql) +} + function getClimatePerRegionAndMonth(regionId, month) { console.log('getClimatePerRegionAndMonth') const sql = `SELECT region_id, AVG(temperature_mean), AVG(temperature_mean_min), AVG(temperature_mean_max), AVG(percipitation), AVG(sunshine) FROM region_climate WHERE month = ${month} AND region_id = ${regionId}` diff --git a/backend/data/regions/images/10.jpg b/backend/data/regions/images/10.jpg new file mode 100644 index 0000000..27a0d5b Binary files /dev/null and b/backend/data/regions/images/10.jpg differ diff --git a/backend/data/regions/images/11.jpg b/backend/data/regions/images/11.jpg new file mode 100644 index 0000000..b4926cc Binary files /dev/null and b/backend/data/regions/images/11.jpg differ diff --git a/backend/data/regions/images/12.jpg b/backend/data/regions/images/12.jpg new file mode 100644 index 0000000..6f73f85 Binary files /dev/null and b/backend/data/regions/images/12.jpg differ diff --git a/backend/data/regions/images/13.jpg b/backend/data/regions/images/13.jpg new file mode 100644 index 0000000..8d7f3e6 Binary files /dev/null and b/backend/data/regions/images/13.jpg differ diff --git a/backend/data/regions/images/18.jpg b/backend/data/regions/images/18.jpg new file mode 100644 index 0000000..8f60c3d Binary files /dev/null and b/backend/data/regions/images/18.jpg differ diff --git a/backend/data/regions/images/2.jpg b/backend/data/regions/images/2.jpg new file mode 100644 index 0000000..5da56e7 Binary files /dev/null and b/backend/data/regions/images/2.jpg differ diff --git a/backend/data/regions/images/24.jpg b/backend/data/regions/images/24.jpg new file mode 100644 index 0000000..2308201 Binary files /dev/null and b/backend/data/regions/images/24.jpg differ diff --git a/backend/data/regions/images/3.jpg b/backend/data/regions/images/3.jpg new file mode 100644 index 0000000..eae27bd Binary files /dev/null and b/backend/data/regions/images/3.jpg differ diff --git a/backend/data/regions/images/6.jpg b/backend/data/regions/images/6.jpg new file mode 100644 index 0000000..d353458 Binary files /dev/null and b/backend/data/regions/images/6.jpg differ diff --git a/backend/data/regions/images/7.jpg b/backend/data/regions/images/7.jpg new file mode 100644 index 0000000..9fe38a7 Binary files /dev/null and b/backend/data/regions/images/7.jpg differ diff --git a/backend/data/regions/images/9.jpg b/backend/data/regions/images/9.jpg new file mode 100644 index 0000000..f26992f Binary files /dev/null and b/backend/data/regions/images/9.jpg differ diff --git a/backend/transformer.js b/backend/transformer.js index 9ac37f2..55a2427 100644 --- a/backend/transformer.js +++ b/backend/transformer.js @@ -3,6 +3,7 @@ const fs = require('fs') exports.transform = (data) => { + data = _.cloneDeep(data) // get data // let data = JSON.parse(fs.readFileSync('transformer-test.json')); const types = Object.keys(data[0].scores)