diff options
Diffstat (limited to 'lib/server/index.js')
| -rw-r--r-- | lib/server/index.js | 63 |
1 files changed, 40 insertions, 23 deletions
diff --git a/lib/server/index.js b/lib/server/index.js index d062131..c32dd07 100644 --- a/lib/server/index.js +++ b/lib/server/index.js @@ -1,21 +1,22 @@ -var fs = require('fs') -var app, express = require('express') -var http = require('http') -var bodyParser = require('body-parser') -var path = require('path') +const fs = require('fs') +const express = require('express') +const http = require('http') +const bodyParser = require('body-parser') +const path = require('path') -var multer = require('multer') -var upload = multer({ dest: 'uploads/' }) +const multer = require('multer') +const upload = multer({ dest: 'uploads/' }) +const Loader = require('../vendor/Loader') -var app, server +let app, server const db = require('../db') -var site = module.exports = {} +const site = module.exports = {} site.init = function(bridge){ app = express() - app.use(express.static(path.join(__dirname, './public'))) + app.use(express.static(path.join(__dirname, '../../public'))) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) @@ -27,22 +28,39 @@ site.init = function(bridge){ const api_folders = crud(app, 'folder', db.Folder, { afterCreate: (folder) => { - fs.mkdir('public/data/' + folder.id + '/', function(){ - console.log('created folder', folder.id, folder.name) + fs.mkdir('public/data/' + folder.get('id') + '/', function(){ + console.log('created folder', folder.get('id'), folder.get('name')) }) } }) const api_files = crud(app, 'file', db.File) const api_jobs = crud(app, 'job', db.Job) const api_tasks = crud(app, 'task', db.Task) + + app.get('/devices', (req, res) => { + res.json( bridge.devices ) + }) - app.post('/folders/:id', upload.array('file'), function(req, res){ + app.post('/folders/:id', upload.array('file'), (req, res) => { if ( ! req.files ) return; - let loaded = {}; - ( req.files || [] ).forEach( (file) => { - loaded[file.filename] = false + let data = {} + + let loader = new Loader() + loader.onReady( () => { + if (Object.keys(data).some( el => !! el )) { + res.json( Object.keys(data).map(k=>data[k]).sort((a,b) => { b.id - a.id }) ) + } + bridge.process() + }) + + loader.register('upload') + + const files = req.files || [] + files.forEach( (file) => { const fn = file.originalname - fs.rename(file.path, 'public/data/' + req.params.id + '/' + fn, function(err){ + data[fn] = false + loader.register(fn) + fs.rename(file.path, 'data/' + req.params.id + '/' + fn, function(err){ api_files.create({ // table.string('username') 'folder_id': req.params.id, @@ -51,16 +69,15 @@ site.init = function(bridge){ 'generated': false, 'processed': false, }).then( (file) => { - loaded[file.filename] = file.toJSON() - if (Object.keys(loaded).some( el => !! el )) { - res.json( Object.keys(loaded).map(k=>loaded[k]).sort((a,b) => { b.id - a.id }) ) - } + data[fn] = file.toJSON() + loader.ready(fn) }).catch( (err) => { console.warn(err) res.sendStatus(500) }) }) }) + loader.ready('upload') }) function crud(app, type_s, model, callbacks){ @@ -68,7 +85,7 @@ site.init = function(bridge){ const type = '/' + type_s + 's/' const type_id = type + ':id' - const crud = db.crud(type_s, model) + const crud = db.crud(model) // index app.get(type, (req, res) => { @@ -91,7 +108,7 @@ site.init = function(bridge){ console.log('create', type) crud.create(req.body).then( (data) => { res.json(data.toJSON()) - callbacks.afterCreate && callbacks.afterCreate(data.toJSON()) + callbacks.afterCreate && callbacks.afterCreate(data) })// .catch( () => res.sendStatus(500) ) }) |
