@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
47 lines (44 loc) • 2.02 kB
JavaScript
const db = require('../../db');
const moment = require('moment');
const momentTimeZone = require('moment-timezone');
const readScheduled = require('../../features/scheduled_creatives/read');
const updateScheduled = require('../../features/scheduled_creatives/update');
const deleteScheduled = require('../../features/scheduled_creatives/delete');
const creativeFeatures = require('../../features/creative');
module.exports = function () {
const message = `Auto published through the Speakr scheduler on ${momentTimeZone.tz('America/Los_Angeles').format('MMMM Do YYYY, h:mm:ss a')} PST`;
return readScheduled.getPassedDueScheduledSubmissions()
.then((submissions) => deleteScheduled.deleteScheduledSubmissions(submissions))
.then((submissions) => readScheduled.doubleCheckScheduled(submissions))
.then((submissions) => {
console.log('\n\n PUBLISHING', submissions);
if (submissions !== 'none scheduled') {
const ids = submissions.map(s => s.dataValues).map(v => v.creative_id);
return creativeFeatures.read.allById(ids)
.then(submissions => creativeFeatures.publish.lambdaPublish(submissions, message))
.then(lambdaRes => {
const lambdaArray = Array.isArray(lambdaRes) ? lambdaRes : [lambdaRes];
const successes = lambdaArray.filter(sub => sub.Payload.code === 201);
const failures = lambdaArray.filter(sub => {
if (sub.Payload.errorMessage || sub.StatusCode === 500 || sub.Payload.code === 500) {
return sub;
}
});
console.log('\n\n\n\n\n\nSUCCESSES', successes);
console.log('\n\nFAILURES', failures);
const successIds = successes.map(s => s.creative_id);
return updateScheduled.updatePostedAtTime(successIds)
.then(() => {
return Promise.resolve({
successes,
failures
});
})
})
} else {
return new Promise((resolve, reject) => {
resolve(`${momentTimeZone.tz('America/Los_Angeles').format('MMMM Do YYYY, h:mm:ss a')} PST`);
})
}
});
};