From e88952388b82a156a11a32ca143119cf066e38b2 Mon Sep 17 00:00:00 2001 From: Timo John Date: Wed, 17 Jun 2020 18:03:47 +0200 Subject: [PATCH] Fixed Region endpoint and cleared up a little. --- backend/models/getRegionById.js | 67 +++++--------------------- backend/models/getRegions2.js | 67 +++++--------------------- backend/util/climateArrayFormatting.js | 10 ++++ 3 files changed, 36 insertions(+), 108 deletions(-) create mode 100644 backend/util/climateArrayFormatting.js diff --git a/backend/models/getRegionById.js b/backend/models/getRegionById.js index c242955..5af4c1d 100644 --- a/backend/models/getRegionById.js +++ b/backend/models/getRegionById.js @@ -1,3 +1,5 @@ +const climateArrayFormatting = require("./../util/climateArrayFormatting.js") + module.exports = async (dbConn, id) => { const region = await dbConn.query( `SELECT regions.id AS region_id, @@ -16,74 +18,31 @@ module.exports = async (dbConn, id) => { regions_byt.entertainment AS entertainment_costs, regions_byt.alcohol AS alcohol_costs FROM regions - JOIN countries ON regions.country_id = countries.id - JOIN (SELECT rcma.region_id, + LEFT JOIN countries ON regions.country_id = countries.id + LEFT JOIN (SELECT rcma.region_id, GROUP_CONCAT(IFNULL(rcma.temperature_mean,"") ORDER BY rcma.month SEPARATOR ', ') AS temperature_mean, GROUP_CONCAT(IFNULL(rcma.temperature_mean_min, "") ORDER BY rcma.month SEPARATOR ', ') AS temperature_mean_min, GROUP_CONCAT(IFNULL(rcma.temperature_mean_max, "") ORDER BY rcma.month SEPARATOR ', ') AS temperature_mean_max, - GROUP_CONCAT(IFNULL(rcma.precipitation, "") ORDER BY rcma.month SEPARATOR ', ') AS precipitation, + GROUP_CONCAT(IFNULL(rcma.percipitation, "") ORDER BY rcma.month SEPARATOR ', ') AS precipitation, GROUP_CONCAT(IFNULL(rcma.raindays, "") ORDER BY rcma.month SEPARATOR ', ') AS raindays, GROUP_CONCAT(IFNULL(rcma.sunshine, "") ORDER BY rcma.month SEPARATOR ', ') AS sunshine, GROUP_CONCAT(IFNULL(rcma.humidity, "") ORDER BY rcma.month SEPARATOR ', ') AS humidity FROM region_climate_monthly_avg AS rcma GROUP BY rcma.region_id) rcma ON rcma.region_id = regions.id - JOIN regions_byt ON regions.id = regions_byt.region_id + LEFT JOIN regions_byt ON regions.id = regions_byt.region_id WHERE regions_byt.travelstyle = 1 AND regions.id = ?`, [id] ); for (k = 0; k < region.length; k++) { - // if (region[k].temperature_mean !== null) { - // const temperature_mean = region[k].temperature_mean - // region[k].temperature_mean = temperature_mean.split(","); - // for (i = 0; i < region[k].temperature_mean.length; i++) { - // region[k].temperature_mean[i] = parseFloat(region[k].temperature_mean[i]) - // } - // } - // if (region[k].temperature_mean_min !== null) { - // const temperature_mean_min = region[k].temperature_mean_min - // region[k].temperature_mean_min = temperature_mean_min.split(","); - // for (i = 0; i < region[k].temperature_mean_min.length; i++) { - // region[k].temperature_mean_min[i] = parseFloat(region[k].temperature_mean_min[i]) - // } - // } - if (region[k].temperature_mean_max !== null) { - const temperature_mean_max = region[k].temperature_mean_max - region[k].temperature_mean_max = temperature_mean_max.split(","); - for (i = 0; i < region[k].temperature_mean_max.length; i++) { - region[k].temperature_mean_max[i] = parseFloat(region[k].temperature_mean_max[i]) - } - - } - if (region[k].precipitation !== null) { - const precipitation = region[k].precipitation - region[k].precipitation = precipitation.split(","); - for (i = 0; i < region[k].precipitation.length; i++) { - region[k].precipitation[i] = parseFloat(region[k].precipitation[i]) - } - } - if (region[k].rain_days !== null) { - const rain_days = region[k].rain_days - region[k].rain_days = rain_days.split(","); - for (i = 0; i < region[k].rain_days.length; i++) { - region[k].rain_days[i] = parseFloat(region[k].rain_days[i]) - } - } - if (region[k].sun_hours !== null) { - const sun_hours = region[k].sun_hours - region[k].sun_hours = sun_hours.split(","); - for (i = 0; i < region[k].sun_hours.length; i++) { - region[k].sun_hours[i] = parseFloat(region[k].sun_hours[i]) - } - } - // if (region[k].humidity !== null) { - // const humidity = region[k].humidity - // region[k].humidity = humidity.split(","); - // for (i = 0; i < region[k].humidity.length; i++) { - // region[k].humidity[i] = parseFloat(region[k].humidity[i]) - // } - // } + //region[k].temperature_mean = climateArrayFormatting(region[k].temperature_mean); + //region[k].temperature_mean_min = climateArrayFormatting(region[k].temperature_mean_min); + region[k].temperature_mean_max = climateArrayFormatting(region[k].temperature_mean_max); + region[k].precipitation = climateArrayFormatting(region[k].precipitation); + region[k].rain_days = climateArrayFormatting(region[k].rain_days); + region[k].sun_hours = climateArrayFormatting(region[k].sun_hours); + //region[k].humidity = climateArrayFormatting(region[k].humidity); } return region; }; diff --git a/backend/models/getRegions2.js b/backend/models/getRegions2.js index 8965042..8bbc906 100644 --- a/backend/models/getRegions2.js +++ b/backend/models/getRegions2.js @@ -1,3 +1,5 @@ +const climateArrayFormatting = require("./../util/climateArrayFormatting.js") + module.exports = async (dbConn) => { const regions = await dbConn.query( `SELECT regions.id AS region_id, @@ -16,72 +18,29 @@ module.exports = async (dbConn) => { regions_byt.entertainment AS entertainment_costs, regions_byt.alcohol AS alcohol_costs FROM regions - JOIN countries ON regions.country_id = countries.id - JOIN (SELECT rcma.region_id, + LEFT JOIN countries ON regions.country_id = countries.id + LEFT JOIN (SELECT rcma.region_id, GROUP_CONCAT(IFNULL(rcma.temperature_mean,"") ORDER BY rcma.month SEPARATOR ', ') AS temperature_mean, GROUP_CONCAT(IFNULL(rcma.temperature_mean_min, "") ORDER BY rcma.month SEPARATOR ', ') AS temperature_mean_min, GROUP_CONCAT(IFNULL(rcma.temperature_mean_max, "") ORDER BY rcma.month SEPARATOR ', ') AS temperature_mean_max, - GROUP_CONCAT(IFNULL(rcma.precipitation, "") ORDER BY rcma.month SEPARATOR ', ') AS precipitation, + GROUP_CONCAT(IFNULL(rcma.percipitation, "") ORDER BY rcma.month SEPARATOR ', ') AS precipitation, GROUP_CONCAT(IFNULL(rcma.raindays, "") ORDER BY rcma.month SEPARATOR ', ') AS raindays, GROUP_CONCAT(IFNULL(rcma.sunshine, "") ORDER BY rcma.month SEPARATOR ', ') AS sunshine, GROUP_CONCAT(IFNULL(rcma.humidity, "") ORDER BY rcma.month SEPARATOR ', ') AS humidity FROM region_climate_monthly_avg AS rcma GROUP BY rcma.region_id) rcma ON rcma.region_id = regions.id - JOIN regions_byt ON regions.id = regions_byt.region_id + LEFT JOIN regions_byt ON regions.id = regions_byt.region_id WHERE regions_byt.travelstyle = 1` ); for (k = 0; k < regions.length; k++) { - // if (regions[k].temperature_mean !== null) { - // const temperature_mean = regions[k].temperature_mean - // regions[k].temperature_mean = temperature_mean.split(","); - // for (i = 0; i < regions[k].temperature_mean.length; i++) { - // regions[k].temperature_mean[i] = parseFloat(regions[k].temperature_mean[i]) - // } - // } - // if (regions[k].temperature_mean_min !== null) { - // const temperature_mean_min = regions[k].temperature_mean_min - // regions[k].temperature_mean_min = temperature_mean_min.split(","); - // for (i = 0; i < regions[k].temperature_mean_min.length; i++) { - // regions[k].temperature_mean_min[i] = parseFloat(regions[k].temperature_mean_min[i]) - // } - // } - if (regions[k].temperature_mean_max !== null) { - const temperature_mean_max = regions[k].temperature_mean_max - regions[k].temperature_mean_max = temperature_mean_max.split(","); - for (i = 0; i < regions[k].temperature_mean_max.length; i++) { - regions[k].temperature_mean_max[i] = parseFloat(regions[k].temperature_mean_max[i]) - } - - } - if (regions[k].precipitation !== null) { - const precipitation = regions[k].precipitation - regions[k].precipitation = precipitation.split(","); - for (i = 0; i < regions[k].precipitation.length; i++) { - regions[k].precipitation[i] = parseFloat(regions[k].precipitation[i]) - } - } - if (regions[k].rain_days !== null) { - const rain_days = regions[k].rain_days - regions[k].rain_days = rain_days.split(","); - for (i = 0; i < regions[k].rain_days.length; i++) { - regions[k].rain_days[i] = parseFloat(regions[k].rain_days[i]) - } - } - if (regions[k].sun_hours !== null) { - const sun_hours = regions[k].sun_hours - regions[k].sun_hours = sun_hours.split(","); - for (i = 0; i < regions[k].sun_hours.length; i++) { - regions[k].sun_hours[i] = parseFloat(regions[k].sun_hours[i]) - } - } - // if (regions[k].humidity !== null) { - // const humidity = regions[k].humidity - // regions[k].humidity = humidity.split(","); - // for (i = 0; i < regions[k].humidity.length; i++) { - // regions[k].humidity[i] = parseFloat(regions[k].humidity[i]) - // } - // } + //regions[k].temperature_mean = climateArrayFormatting(regions[k].temperature_mean); + //regions[k].temperature_mean_min = climateArrayFormatting(regions[k].temperature_mean_min); + regions[k].temperature_mean_max = climateArrayFormatting(regions[k].temperature_mean_max); + regions[k].precipitation = climateArrayFormatting(regions[k].precipitation); + regions[k].rain_days = climateArrayFormatting(regions[k].rain_days); + regions[k].sun_hours = climateArrayFormatting(regions[k].sun_hours); + //regions[k].humidity = climateArrayFormatting(regions[k].humidity); } return regions; }; diff --git a/backend/util/climateArrayFormatting.js b/backend/util/climateArrayFormatting.js new file mode 100644 index 0000000..7f705b3 --- /dev/null +++ b/backend/util/climateArrayFormatting.js @@ -0,0 +1,10 @@ +module.exports = (array) => { + if (array !== null && array !== undefined) { + const value = array + array = value.split(","); + for (i = 0; i < array.length; i++) { + array[i] = parseFloat(array[i]) + } + } + return array; +} \ No newline at end of file