浏览代码

Eliminate code duplication

jmacura 4 年之前
父节点
当前提交
c7c3e01d88
共有 1 个文件被更改,包括 44 次插入86 次删除
  1. 44 86
      index.js

+ 44 - 86
index.js

@@ -56,20 +56,7 @@ app.get('/refresh', async (req, res, next) => {
 app.get('/:aoi?/datasets/', async (req, res, next) => {
   console.log('received datasets/ GET request')
   const aoi = req.params.aoi || 'eu'
-  let datasets = aoi == 'cz' ? _datasetsCZ : _datasetsEu
-  if (!datasets) {
-    try {
-      if (aoi == 'cz') {
-        _datasetsCZ = await nutsData.loadDatasets(_datasetsCzFilePath)
-        datasets = _datasetsCZ
-      } else {
-        _datasetsEu = await nutsData.loadDatasets(_datasetsEuFilePath)
-        datasets = _datasetsEu
-      }
-    } catch (e) {
-      res.send(e.toString() || e)
-    }
-  }
+  const datasets = loadDatasetsIfNeeded(req, res, aoi)
   helpers.formatResponse(datasets, req, res)
 });
 
@@ -96,34 +83,8 @@ app.get('/:aoi?/scores/:nuts', async (req, res, next) => {
 app.get('/:aoi?/scores', async (req, res, next) => {
   console.log('received scores/cz GET request')
   const aoi = req.params.aoi || 'eu'
-  let datasets = aoi == 'cz' ? _datasetsCZ : _datasetsEu
-  let ruralData = aoi == 'cz' ? _ruralDataCZ : _ruralDataEu
-  if (!datasets) { // datasets must be loaded prior to data loading
-    try {
-      if (aoi == 'cz') {
-        _datasetsCZ = await nutsData.loadDatasets(_datasetsCzFilePath)
-        datasets = _datasetsCZ
-      } else {
-        _datasetsEu = await nutsData.loadDatasets(_datasetsEuFilePath)
-        datasets = _datasetsEu
-      }
-    } catch (e) {
-      res.send(e.toString() || e)
-    }
-  }
-  if (!ruralData) {
-    try {
-      if (aoi == 'cz') {
-        _ruralDataCZ = await nutsData.loadRuralData(_dataCzFilePath, datasets)
-        ruralData = _ruralDataCZ
-      } else {
-        _ruralDataEu = await nutsData.loadRuralData(_dataEuFilePath, datasets)
-        ruralData = _ruralDataEu
-      }
-    } catch (e) {
-      res.send(e.toString() || e)
-    }
-  }
+  loadDatasetsIfNeeded(req, res, aoi)
+  const ruralData = loadRuralDataIfNeeded(req, res, aoi)
   helpers.formatResponse(ruralData, req, res)
 });
 
@@ -133,34 +94,8 @@ app.post('/:aoi?/scores', async (req, res, next) => {
   console.log('received scores/ POST request')
   //console.log("query: " + JSON.stringify(req.body.factors, null, 4));
   const aoi = req.params.aoi || 'eu'
-  let datasets = aoi == 'cz' ? _datasetsCZ : _datasetsEu
-  let ruralData = aoi == 'cz' ? _ruralDataCZ : _ruralDataEu
-  if (!datasets) { // datasets must be loaded prior to data loading
-    try {
-      if (aoi == 'cz') {
-        _datasetsCZ = await nutsData.loadDatasets(_datasetsCzFilePath)
-        datasets = _datasetsCZ
-      } else {
-        _datasetsEu = await nutsData.loadDatasets(_datasetsEuFilePath)
-        datasets = _datasetsEu
-      }
-    } catch (e) {
-      res.send(e.toString() || e)
-    }
-  }
-  if (!ruralData) {
-    try {
-      if (aoi == 'cz') {
-        _ruralDataCZ = await nutsData.loadRuralData(_dataCzFilePath, datasets)
-        ruralData = _ruralDataCZ
-      } else {
-        _ruralDataEu = await nutsData.loadRuralData(_dataEuFilePath, datasets)
-        ruralData = _ruralDataEu
-      }
-    } catch (e) {
-      res.send(e.toString() || e)
-    }
-  }
+  loadDatasetsIfNeeded(req, res, aoi)
+  loadRuralDataIfNeeded(req, res, aoi)
   returnAllScores(req, res, aoi)
 });
 
@@ -202,24 +137,10 @@ app.get('/:aoi?/clusters/', (req, res, next) => {
 */
 app.post('/:aoi?/clusters/', async (req, res, next) => {
   const aoi = req.params.aoi || 'eu'
-  let datasets = aoi == 'cz' ? _datasetsCZ : _datasetsEu
+  const datasets = loadDatasetsIfNeeded(req, res, aoi)
   const dataFilePath = aoi == 'cz' ? _clusteringCzInputFilePath : _dataEuFilePath
   const clusteringModifiedFilePath = aoi == 'cz' ? _clusteringCzModifiedFilePath : _clusteringEuModifiedFilePath
   const idString = aoi == 'cz' ? 'LAU2' : 'NUTS_ID'
-  if (!datasets) { // datasets must be loaded prior to data loading
-    try {
-      const datasetsFilePath = aoi == 'cz' ? _datasetsCzFilePath : _datasetsEuFilePath
-      if (aoi == 'cz') {
-        _datasetsCZ = await nuts.loadDatasets(_datasetsCzFilePath)
-        datasets = _datasetsCZ
-      } else {
-        _datasetsEu = await nutsData.loadDatasets(_datasetsEuFilePath)
-        datasets = _datasetsEu
-      }
-    } catch (e) {
-      res.send(e.toString() || e)
-    }
-  }
   try {
     //console.log(req.body);
     const clusteringData = await nutsData.loadClusteringInput(
@@ -352,4 +273,41 @@ function handleRCall(req, res, aoi = 'eu') {
       }
     }
   );
-}
+}
+
+function loadDatasetsIfNeeded(req, res, aoi) {
+  let datasets = aoi == 'cz' ? _datasetsCZ : _datasetsEu
+  if (!datasets) {
+    try {
+      if (aoi == 'cz') {
+        _datasetsCZ = await nutsData.loadDatasets(_datasetsCzFilePath)
+        datasets = _datasetsCZ
+      } else {
+        _datasetsEu = await nutsData.loadDatasets(_datasetsEuFilePath)
+        datasets = _datasetsEu
+      }
+    } catch (e) {
+      res.send(e.toString() || e)
+    }
+  }
+  return datasets
+}
+
+function loadRuralDataIfNeeded(req, res, aoi) {
+  let ruralData = aoi == 'cz' ? _ruralDataCZ : _ruralDataEu
+  const datasets = aoi == 'cz' ? _datasetsCZ : _datasetsEu
+  if (!ruralData) {
+    try {
+      if (aoi == 'cz') {
+        _ruralDataCZ = await nutsData.loadRuralData(_dataCzFilePath, datasets)
+        ruralData = _ruralDataCZ
+      } else {
+        _ruralDataEu = await nutsData.loadRuralData(_dataEuFilePath, datasets)
+        ruralData = _ruralDataEu
+      }
+    } catch (e) {
+      res.send(e.toString() || e)
+    }
+  }
+  return ruralData
+}