UNPKG

composr-core

Version:
133 lines (112 loc) 3.29 kB
'use strict' var driverStore = require('../stores/corbelDriver.store') var utils = require('../utils') var parseToComposrError = require('../parseToComposrError') var BaseDao = function BaseDao (options) { this.COLLECTION = options.collection } BaseDao.prototype.load = function load (id) { if (!id) { return Promise.reject('missing:id') } var that = this if (driverStore.getDriver()) { return driverStore.getDriver() .resources .resource(this.COLLECTION, id) .get() .then(function (response) { return response.data }) .catch(function (response) { var error = parseToComposrError(response.data, 'Invalid ' + that.COLLECTION + ' load', response.status) throw error }) } else { return Promise.reject('missing:driver') } } BaseDao.prototype.loadSome = function loadSome (ids) { var that = this if (!ids || !Array.isArray(ids)) { return Promise.reject('missing:ids') } if (driverStore.getDriver()) { var caller = function (pageNumber, pageSize) { return driverStore.getDriver() .resources .collection(that.COLLECTION) .get({ pagination: { page: pageNumber, pageSize: pageSize }, query: [{ '$in': { 'id': ids } }] }) } return utils.getAllRecursively(caller) .catch(function (response) { var error = parseToComposrError(response.data, 'Invalid ' + that.COLLECTION + ' load', response.status) throw error }) } else { return Promise.reject('missing:driver') } } BaseDao.prototype.loadAll = function loadAll () { var that = this var caller = function (pageNumber, pageSize) { return driverStore.getDriver() .resources .collection(that.COLLECTION) .get({ pagination: { page: pageNumber, pageSize: pageSize } }) } return utils.getAllRecursively(caller) .catch(function (response) { var error = parseToComposrError(response.data, 'Invalid ' + that.COLLECTION + ' load', response.status) throw error }) } BaseDao.prototype.save = function save (item, driver) { if (!driverStore.getDriver() && !driver) { return Promise.reject('missing:driver') } var that = this var theDriver = driver || driverStore.getDriver() return theDriver .resources .resource(this.COLLECTION, item.id) .update(item) .catch(function (response) { var error = parseToComposrError(response.data, 'Invalid ' + that.COLLECTION + ' save', response.status) throw error }) } BaseDao.prototype.delete = function _delete (id, driver) { if (!driverStore.getDriver() && !driver) { return Promise.reject('missing:driver') } if (!id) { return Promise.reject(parseToComposrError({}, 'Invalid ' + this.COLLECTION + ' delete', 401)) } var that = this var theDriver = driver || driverStore.getDriver() return theDriver .resources .resource(this.COLLECTION, id) .delete() .catch(function (response) { var error = parseToComposrError(response.data, 'Invalid ' + that.COLLECTION + ' delete', response.status) throw error }) } module.exports = BaseDao