@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
83 lines (79 loc) • 2.76 kB
JavaScript
;
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);
});
};