From 84aca1791d43ae5a65bd88747636e418b380ad64 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 28 May 2018 20:18:20 +0200 Subject: reconsidering datasets component... stub in api client --- app/server/db/crud.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 app/server/db/crud.js (limited to 'app/server/db/crud.js') diff --git a/app/server/db/crud.js b/app/server/db/crud.js new file mode 100644 index 0000000..3aa0127 --- /dev/null +++ b/app/server/db/crud.js @@ -0,0 +1,47 @@ +module.exports = function(model) { + return { + index: (q) => { + return model.query( (qb) => { + const limit = q.limit || 100 + const offset = q.offset || 0 + const orderBy = q.orderBy || 'id desc' + if (limit) { + delete q.limit + } + if (q.offset) { + delete q.offset + } + delete q.orderBy + if (Object.keys(q).length > 0) qb.where(q) + if (orderBy) { + const ob = orderBy.split(" ") + const ob_field = ob[0] || 'id' + const ob_dir = ob[1] || 'desc' + qb.orderBy(ob_field, ob_dir) + } + if (limit) qb.limit( limit ) + if (offset) qb.offset( offset ) + // console.log(qb) + return qb + }).fetchAll() + }, + show: (id) => { + return new model({'id': id}).fetch() + }, + show_ids: (ids) => { + return model.query( (qb) => { + qb.whereIn('id', ids) + return qb + }).fetchAll() + }, + create: (data) => { + return new model(data).save() + }, + update: (id, data) => { + return new model({'id': id}).save(data) + }, + destroy: (id) => { + return new model({'id': id}).destroy() + }, + } +} -- cgit v1.2.3-70-g09d2