Skip to content
Snippets Groups Projects
Select Git revision
  • d04078822276996ca97e5f74556059aa8a140b4e
  • master default protected
  • dev-lkugler
  • teaching-2024
  • old_config_2023-05 protected
  • v2025.2
  • v2024.6
  • v2024.2.20
8 results

prepare_wrfinput.py

Blame
  • index.js 1.12 KiB
    // const bodyParser = require('body-parser')
    const app = require('express')()
    const multer = require('multer')
    const upload = multer({ dest: '/tmp' })
    const fetch = require('node-fetch')
    
    // TODO extend me
    const colTypeMap = {
      Boolean: 'BOOLEAN',
      Date: 'DATE',
      Integer: 'NUMBER',
      Numeric: 'NUMBER',
      String: 'TEXT',
      Timestamp: 'DATE'
    }
    
    app.post('/table_from_csv', upload.single('file'), async (req, res) => {
      const { file } = req
      const { path } = file
    
      // send path to analyse service
      let analysis
      try {
        analysis = await fetch(`${process.env.API_ANALYSE}/datatypesbypath?filepath=${path}`)
        analysis = await analysis.json()
      } catch (error) {
        return res.json({ success: false, error })
      }
    
      // map messytables / CoMi's `determine_dt` column types to ours
      // e.g. "Integer" -> "NUMBER"
      let entries = Object.entries(analysis.columns)
      entries = entries.map(([k, v]) => {
        if (colTypeMap[v]) {
          v = colTypeMap[v]
        }
        return {
          name: k,
          type: v,
          nullAllowed: true,
          primaryKey: false
        }
      })
    
      res.json({ success: true, file, columns: entries })
    })
    
    module.exports = app