UNPKG

tm-apps-list-api

Version:

58 lines (45 loc) 1.74 kB
"use strict"; const hl = require("highland"); const utils = require("./utils"); const R = require("ramda"); const BeneLogger = require('bene-logger'); const isFuture = x => new Date(x.published_date) > new Date(); module.exports = (config, db) => (req, res, next) => { const publicationId = req.params.publicationId; const escenicId = req.params.escenicId; const source = req.params.source; const logger = new BeneLogger({logging: config.logging.enabled}); logger.setDefaults({ tag_id: `${source}.${escenicId}`, source: source, service_name: 'list-api' }); logger.info('Processing Authors Request'); logger.time('Finished Authors Request'); const articlesEndpoint = !req.query.cache || req.query.cache !== "false" ? config.cacheEndpoint : config.articleEndpoint; const query = { where:{ author_id: `${source}.${escenicId}`, publication_id:`${source}.${publicationId}` }, order: [[ 'published_date', 'DESC' ]], limit:20 }; const stream = hl(db.article_author.findAll(query)) .reject(R.isNil) .sequence() .invoke("get", {"plain": true}) .reject(isFuture) .pluck("article_id"); const GetArticle = utils.makeArticleRequest(logger, articlesEndpoint, source, publicationId); const NotFound = utils.notFound(`${source}/${publicationId}/authors/${escenicId || ""} not available`); utils.getArticlesInParallel(logger, GetArticle, NotFound, stream) .sequence() .reject(utils.shouldBeExcluded) .collect() .map(utils.addMeta) .toCallback(utils.sendResponse(logger, res, next)); };