summaryrefslogtreecommitdiff
path: root/lib/db
diff options
context:
space:
mode:
Diffstat (limited to 'lib/db')
-rw-r--r--lib/db/bookshelf.js4
-rw-r--r--lib/db/crud.js2
-rw-r--r--lib/db/model.js24
-rw-r--r--lib/db/models.js22
4 files changed, 32 insertions, 20 deletions
diff --git a/lib/db/bookshelf.js b/lib/db/bookshelf.js
index 69157cc..27d9dbb 100644
--- a/lib/db/bookshelf.js
+++ b/lib/db/bookshelf.js
@@ -1,4 +1,4 @@
-var knex = require('knex')({
+const knex = require('knex')({
client: 'mysql2',
connection: {
host : process.env.DB_HOST,
@@ -16,7 +16,7 @@ var knex = require('knex')({
}
})
-var bookshelf = require('bookshelf')(knex)
+const bookshelf = require('bookshelf')(knex)
module.exports = {
bookshelf: bookshelf,
diff --git a/lib/db/crud.js b/lib/db/crud.js
index fb32690..c0e0e2c 100644
--- a/lib/db/crud.js
+++ b/lib/db/crud.js
@@ -34,7 +34,7 @@ module.exports = function(model) {
return new model({'id': id}).save(data)
},
destroy: (id) => {
- return new model({'id': id}).destroy(data)
+ return new model({'id': id}).destroy()
},
}
} \ No newline at end of file
diff --git a/lib/db/model.js b/lib/db/model.js
index 1f729f6..fae7691 100644
--- a/lib/db/model.js
+++ b/lib/db/model.js
@@ -27,14 +27,14 @@ module.exports = function modelScope(type, db_model, _props) {
let recs = data.toJSON()
const loader = new Loader ()
loader.onReady( () => {
- console.log(type, 'ready')
+ // console.log(type, 'ready')
resolve(recs)
})
- console.log('hasOne')
+ // console.log('hasOne')
loader.register('hasOne')
Object.keys(props.hasOne).forEach( (key,i) => {
loader.register(key)
- console.log('register', key)
+ // console.log('register', key)
const type = props.hasOne[key]
const id_lookup = {}
recs.forEach(r => {
@@ -50,7 +50,7 @@ module.exports = function modelScope(type, db_model, _props) {
sub_recs.toJSON().forEach(rec => {
id_lookup[rec.id].forEach( parent_rec => parent_rec[short_key] = rec )
})
- console.log('ready', key)
+ // console.log('ready', key)
loader.ready(key)
})
})
@@ -94,10 +94,10 @@ module.exports = function modelScope(type, db_model, _props) {
crud.index(query).then( (recs) => {
if (recs && recs.length) {
const rec = recs.at(0)
- console.log('found rec', data.name)
+ // console.log('found rec', data.name)
return resolve(rec)
}
- console.log('creating rec', data.name)
+ // console.log('creating rec', data.name)
model.create(data).then( (rec) => {
resolve(rec)
})
@@ -118,7 +118,7 @@ module.exports = function modelScope(type, db_model, _props) {
},
update: (id, data) => {
- console.log('update', id)
+ // console.log('update', id)
return new Promise( (resolve, reject) => {
crud.update(id, model.sanitize(data)).then( (data) => {
resolve(data.toJSON())
@@ -132,20 +132,22 @@ module.exports = function modelScope(type, db_model, _props) {
destroy: (id) => {
return new Promise( (resolve, reject) => {
crud.destroy(id).then( (data) => {
- res.json(data.toJSON())
+ resolve(data.toJSON())
})// .catch( () => res.sendStatus(500) )
})
},
sanitize: (data) => {
var valid = {}
- Object.keys(data).forEach(key => {
+ props.fields.forEach(key => {
if (props.hasOne[key]) {
return
}
- valid[key] = data[key]
+ if (key in data) {
+ valid[key] = data[key]
+ }
})
- console.log(valid)
+ // console.log(valid)
return valid
},
diff --git a/lib/db/models.js b/lib/db/models.js
index 588ce58..2108148 100644
--- a/lib/db/models.js
+++ b/lib/db/models.js
@@ -1,10 +1,8 @@
let fs = require('fs')
let model = require('./model')
-
-let connection = require("./bookshelf")
-let bookshelf = connection.bookshelf
-let knex = connection.knex
+let bookshelf = require("./bookshelf").bookshelf
+import bridge from '../bridge'
let Folder = bookshelf.Model.extend({
tableName: 'folders',
@@ -25,15 +23,27 @@ let Task = bookshelf.Model.extend({
module.exports = {
folder: model('folder', Folder, {
+ fields: "name username description".split(" "),
afterCreate: (folder) => {
fs.mkdir('data/' + folder.get('id') + '/', function(){
console.log('created folder', folder.get('id'), folder.get('name'))
})
}
}),
- file: model('file', File),
- job: model('job', Job),
+ file: model('file', File, {
+ fields: "folder_id username name mime type duration analysis size processed generated".split(" "),
+ afterCreate: (file) => {
+ bridge.processFiles()
+ }
+ }),
+ job: model('job', Job, {
+ fields: "name username completed tool".split(" "),
+ }),
task: model('task', Task, {
+ fields: "job_id username completed processing tool content_file_id style_file_id output_file_id alpha iterations stdout stderr".split(" "),
+ afterCreate: (task) => {
+ bridge.processTasks()
+ },
hasOne: {
content_file: File,
style_file: File,