UNPKG

@speakr/speakr-module-services

Version:
83 lines (79 loc) 2.76 kB
"use strict"; const db = require('../../db'); const influencers_network = require('../../features/influencers_network'); /** * Creates an influencer and influencerNetwork if one or both do not exists. * @param {Object} options - Object with data. * @param {string} options.id - The actual [Twitter|Facebook|Instagram] social media account id that came from auth. * @param {string} options.referrer - Id hash of the influencer who referred the user. * @param {string} options.platforms - The platform for the influencer. * @param {string} options.networks - The network for the influencer. * @returns {Object} Object that contains the influencer and the influencerNetwork. */ module.exports = function (options) { return db.accounts.findOne({ where: { platform_id: options.platforms.id, platform_user_id: options.id } }) .then(account => { console.log('\n\n\nA 1') options.accounts = account; return Promise.resolve(options); }) .then(options => { console.log('\n\n\nA 2') if (!!options.accounts) { return db.influencers.findOrCreate({ where: { id: options.accounts.influencer_id } }) .spread(influencers => { console.log('\n\n\nA 3') return options.accounts.updateAttributes({influencer_id: influencers.id}) .then((accounts) => { console.log('\n\n\nA 4') options.accounts = accounts; options.influencers = influencers; return Promise.resolve(options); }) }); } else { return db.influencers.create() .then(influencers => { console.log('\n\n\nA 4') options.influencers = influencers; return Promise.resolve(options); }) } }) .then(options => { console.log('\n\n\nA 5') if (!!options.referrer) { return db.influencers.findOne({where: {id_hash: options.referrer}}) .then(influencers => { console.log('\n\n\nA 6') if (!!influencers) { return options.influencers.updateAttributes({ referrer: influencers.id }) .then(influencer => { options.influencers = influencer; return Promise.resolve(options)}); } return Promise.resolve(options); }); } return Promise.resolve(options); }) .then(options => { if (!!options.networks) { console.log('\n\n\nA 7') return db.influencers_networks.findOrCreate({ where: { influencer_id: options.influencers.id, network_id: options.networks.id }, defaults: { influencer_id: options.influencers.id, network_id: options.networks.id } }) .then(influencers_network => { console.log('\n\n\nA 8') options.influencers_networks = influencers_network; return Promise.resolve(options); }); } return Promise.resolve(options); }); };