summaryrefslogtreecommitdiff
path: root/app/server/util/api.js
blob: e411432e39e0d1b2011ed450553079bda6ae0b00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
const db = require('../db')

export function api (app, type) {
  const type_uri = '/api/' + type + '/'
  const type_id = type_uri + ':id'

  const model = db.models[type]

  // index
  app.get(type_uri, (req, res) => {
    console.log('index', type)
    model.index(req.query).then( data => res.json(data) )
  })
  
  // show
  app.get(type_id, (req, res) => {
    console.log('show', type, req.params.id)
    model.show(req.params.id).then( (data) => {
      res.json(data)
    })
  })

  // create
  app.post(type_uri, (req, res) => {
    console.log('create', type)
    model.create(req.body).then( (data) => {
      res.json(data)
    })// .catch( () => res.sendStatus(500) )
  })

  // update
  app.put(type_id, (req, res) => {
    console.log('update', type, req.params.id)
    model.update(req.body.id, req.body).then( (data) => {
      res.json(data)
    })// .catch( () => res.sendStatus(500) )
  })

  // destroy
  app.delete(type_id, (req, res) => {
    console.log('destroy', type, req.params.id)
    model.destroy(req.params.id).then( (data) => {
      res.json(data)
    })// .catch( () => res.sendStatus(500) )
  })
  
  return model
}

const upload = require('./upload')

export function uploadFile(req, res, next) {
  if (! req.file) {
    res.json({ error: "no files" })
    return
  }
  var dirname = '/cortex/' + req.params.tool + '/'
  upload.put({
    file: req.file,
    dirname: dirname,
    preserveFilename: true,
    unacceptable: function(err){
      res.sendStatus({ error: 'Problem uploading file.' })
    },
    success: function(url){
      res.urls = url
      next()
    }
  })
}

export function uploadFiles(req, res, next){
  if (! req.files || ! req.files.length) {
    res.json({ error: "no files" })
    return
  }
  var dirname = '/cortex/' + req.params.tool + '/'
  var promises = req.files.map((file) => {
    return new Promise( (resolve, reject) => {
      upload.put({
        file: file,
        dirname: dirname,
        preserveFilename: true,
        unacceptable: function(err){
          reject(err)
        },
        success: function(url){
          console.log("file >", url)
          resolve(url)
        }
      })
    })
  })
  Promise.all(promises).then(values => {
    res.urls = urls
    next()
  }).catch(err => {
    console.log(err)
  })
}