UNPKG

forest-express-sequelize

Version:

Official Express/Sequelize Liana for Forest

38 lines (37 loc) 1.24 kB
"use strict"; require("core-js/modules/es.array.iterator.js"); require("core-js/modules/es.array.sort.js"); const _ = require('lodash'); const ResourcesGetter = require('./resources-getter'); const HasManyGetter = require('./has-many-getter'); const BATCH_INITIAL_PAGE = 1; const BATCH_SIZE = 1000; function ResourcesExporter(model, options, params, association, user) { const primaryKeys = _.keys((association || model).primaryKeys); params.sort = primaryKeys[0] || 'id'; params.page = { size: BATCH_SIZE }; function getter() { if (association) { return new HasManyGetter(model, association, options, params, user); } return new ResourcesGetter(model, options, params, user); } function retrieveBatch(dataSender, pageNumber) { params.page.number = pageNumber; return getter().perform().then(function (results) { const records = results[0]; return dataSender(records).then(function () { if (records.length === BATCH_SIZE) { return retrieveBatch(dataSender, pageNumber + 1); } return null; }); }); } this.perform = function (dataSender) { return retrieveBatch(dataSender, BATCH_INITIAL_PAGE); }; } module.exports = ResourcesExporter;