diff options
Diffstat (limited to 'app/server/util/api.js')
| -rw-r--r-- | app/server/util/api.js | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/app/server/util/api.js b/app/server/util/api.js new file mode 100644 index 0000000..2b2a9e4 --- /dev/null +++ b/app/server/util/api.js @@ -0,0 +1,100 @@ +const db = require('../db') + +export function api (app, type) { + const type_s = '/' + type + 's/' + const type_id = type_s + ':id' + + const model = db.models[type] + + // index + app.get(type_s, (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_s, (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) + }) +}
\ No newline at end of file |
