UNPKG

@speakr/speakr-module-services

Version:
60 lines (55 loc) 1.78 kB
'use strict'; const db = require('../../db/'); module.exports = { byPage }; function byPage(options) { let page = options.page || 1; let offset = (page - 1) * 50 || 0; let where = {influencer_id: options.influencers.id}; return db.notifications.findAll({ attributes: [[db.Sequelize.fn("MAX", db.Sequelize.col('id')), 'id']], where: where, order: [[db.Sequelize.fn("MAX", db.Sequelize.col('created_at')), 'DESC']], limit: 50, offset: offset, group: ['creative_id', 'invite_id', 'line_item_id'] }) .then(notifications => { if (!!notifications) { options.notifications = notifications; return Promise.resolve(options); } else { return Promise.resolve(options); } }) .then(options => db.notifications.findAll({ where: {id: {$in: options.notifications.map(n => n.id)}}, order: [['created_at', 'DESC']], include: [{ model: db.creatives, include: [{ model: db.invites, include: [db.creatives, { model: db.initiatives, paranoid: false, include: [db.platforms, {model: db.campaigns, paranoid: false, include: [db.brands]}, db.networks] }, {model: db.accounts, paranoid: false}] }] }, { model: db.invites, include: [db.creatives, { model: db.initiatives, paranoid: false, include: [db.platforms, {model: db.campaigns, paranoid: false, include: [db.brands]}, db.networks] }, db.accounts] }, db.line_items ] }) ).then(notifications => { options.notifications = notifications; return Promise.resolve(options); }); }