Use knex instead of js-data

This commit is contained in:
Zalmoxisus
2016-11-08 22:48:32 +02:00
parent 7c106cd843
commit fd9f7f2c0d
9 changed files with 130 additions and 64 deletions

View File

@ -1,11 +1,9 @@
var uuid = require('node-uuid');
var pick = require('lodash/pick');
var JSData = require('js-data');
var getAdapter = require('./adapter');
var connector = require('./db/connector');
var store;
var adapter;
var Report;
var reports = 'remotedev_reports';
var knex;
var baseFields = ['id', 'title', 'added'];
@ -15,41 +13,17 @@ function error(msg) {
});
}
function map(data, fields) {
if (!fields) return data;
return data.map(function(r) {
return pick(r, fields);
});
}
function listEvery(query) {
if (!adapter) {
return new Promise(function(resolve) {
var report = Report.filter(query);
return resolve(report);
});
}
return Report.findAll(query);
}
function list(query, fields) {
return new Promise(function(resolve) {
listEvery(query).then(function(data) {
return resolve(map(data, fields || baseFields));
});
});
knex.select().from('remotedev_apps').then(function(r){ console.log(r) });
var r = knex.select(fields || baseFields).from(reports);
if (query) return r.where(query);
return r;
}
function get(id) {
if (!id) return error('No id specified.');
if (!adapter) {
return new Promise(function(resolve) {
var report = Report.get(id);
return resolve(report);
});
}
return Report.find(id);
return knex(reports).where('id', id);
}
function add(data) {
@ -75,17 +49,11 @@ function add(data) {
user: data.user,
userId: typeof data.user === 'object' ? data.user.id : data.user,
meta: data.meta,
exception: data.exception,
added: Date.now()
exception: data.exception
};
if (!adapter) {
return new Promise(function(resolve) {
var report = Report.inject(obj);
return resolve(report);
});
}
return Report.create(obj);
return knex.insert(obj).into(reports)
.then(function (){ return byBaseFields(obj); })
}
function byBaseFields(data) {
@ -93,24 +61,12 @@ function byBaseFields(data) {
}
function createStore(options) {
var adapterName = options.adapter;
store = new JSData.DS();
if (adapterName) {
var DSAdapter = getAdapter(adapterName);
adapter = new DSAdapter(options.dbOptions);
store.registerAdapter(adapterName, adapter, { default: true });
}
Report = store.defineResource('report');
knex = connector(options);
return {
list: list,
get: get,
add: add,
selectors: {
byBaseFields: byBaseFields
}
add: add
};
}