Skip to content
Snippets Groups Projects
Select Git revision
  • d0858ff31552558ccb8e47fe3d0a53ef107536e6
  • master default protected
  • dev protected
  • release-1.10 protected
  • 549-test-oai-pmh
  • 545-saving-multiple-times-breaks-pid-metadata
  • release-1.9 protected
  • 499-standalone-compute-service-2
  • 539-load-tests
  • hotfix/helm-chart
  • luca_ba_new_interface
  • 534-bug-when-adding-access-to-user-that-is-not-registered-at-dashboard-service
  • release-1.8 protected
  • 533-integrate-semantic-recommendation
  • feature/openshift
  • 518-spark-doesn-t-map-the-headers-correct
  • 485-fixity-checks
  • 530-various-schema-problems-with-subsets
  • release-1.7 protected
  • fix/auth-service
  • fix/pid-list
  • v1.10.1 protected
  • v1.10.0-rc13 protected
  • v1.10.0-rc12 protected
  • v1.10.0-rc11 protected
  • v1.10.0-rc10 protected
  • v1.10.0-rc9 protected
  • v1.10.0-rc8 protected
  • v1.10.0-rc7 protected
  • v1.10.0-rc6 protected
  • v1.10.0-rc5 protected
  • v1.10.0-rc4 protected
  • v1.10.0-rc3 protected
  • v1.10.0-rc2 protected
  • v1.10.0rc1 protected
  • v1.10.0rc0 protected
  • v1.10.0 protected
  • v1.9.3 protected
  • v1.9.2 protected
  • v1.9.2-rc0 protected
  • v1.9.1 protected
41 results

index.js

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