all files / api/lib/ getId.js

95.45% Statements 42/44
83.33% Branches 40/48
100% Functions 0/0
100% Lines 38/38
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84                                                                                           
"use strict";
 
const BeneLogger = require('bene-logger');
const R = require('ramda');
let hl = require("highland");
 
module.exports = {
 
    section: (db, config) => (req, res) => {
        const logger = new BeneLogger({logging: config.logging.enabled});
 
        const source = req.params.source;
        const publicationId = req.params.publicationId;
 
        logger.setDefaults({
            service_name: 'appsApi'
        });
 
        const f = R.replace(/[\'_-]+/g, '%', req.query.filter || '');
        const r = R.replace(/[\'_-]+/g, '%', req.query.reject || '');
        const filter = !R.isEmpty(f) && R.test(/^[A-Za-z\d\-_\s%]+$/, f) ? f : void 0;
        const reject = !R.isEmpty(r) && R.test(/^[A-Za-z\d\-_\s%]+$/, r) ? r : void 0;
 
        logger.info(`processing section id request ${source}.${publicationId}`, {
            "filter": filter,
            "reject": reject
        });
 
        let query = {
            "where": {
                "publication_id": `${source}.${publicationId}`
            },
            "attributes": ["source", "escenic_id", "name"]
        };
 
        let name = {};
        if (filter && filter.length > 0) name["$iLike"] = `%${filter}%`;
        Iif (reject && reject.length > 0) name["$notILike"] = `%${reject}%`;
 
        if (R.has("$iLike", name) || R.has("$notILike", name)) query.where.name = name;
 
        hl(db.section.findAll(query))
            .toCallback((err, result) => {
                logger.info(`finished section id ${source}.${publicationId}`);
                res.send(result);
            });
    },
 
    tag: (db, config) => (req, res) => {
        const logger = new BeneLogger({logging: config.logging.enabled});
 
        logger.setDefaults({
            service_name: 'appsApi'
        });
 
        const f = R.replace(/[\'_-\s]+/g, '%', req.query.filter || '');
        const r = R.replace(/[\'_-\s]+/g, '%', req.query.reject || '');
        const filter = !R.isEmpty(f) && R.test(/^[A-Za-z\d\-_\s%]+$/, f) ? f : void 0;
        const reject = !R.isEmpty(r) && R.test(/^[A-Za-z\d\-_\s%]+$/, r) ? r : void 0;
 
        logger.info(`processing tag id request`, {
            "filter": filter,
            "reject": reject
        });
 
        let query = {
            "attributes": ["id", "name", "tag_id"],
            "where": {}
        };
        let name = {};
 
        if (filter && filter.length > 0) name["$iLike"] = `%${filter}%`;
        Iif (reject && reject.length > 0) name["$notILike"] = `%${reject}%`;
 
        if (R.has("$iLike", name) || R.has("$notILike", name)) query.where.name = name;
 
        hl(db.tag.findAll(query))
            .toCallback((err, result) => {
                logger.info(`finished tag id request`);
                res.send(result);
            });
    }
 
};