UNPKG

prism-ad-campaigns

Version:
89 lines (66 loc) 2.12 kB
const Job = require('structure-job') const {ApplicationModel} = require('structure-applications') class CreateAdCampaignJob extends Job { constructor(options = {}) { super(Object.assign({}, { interval: 1000, label: 'Create Ad Campaign', priority: 'high', table: 'jobs_create_ad_campaign' }, options)) this.logger = options.logger || console if(!this.logger.debug) { this.logger.debug = console.log.bind(console) } } async handler(job) { const organizationId = job.data.organizationId const applicationId = job.data.applicationId const document = job.data.document this.logger.debug('Creating ad campaign', { applicationId, documentId: job.data.document.id, }) try { // Avoid circular import const AdCampaignModel = require('../models/ad-campaign') const applicationModel = new ApplicationModel({ logger: this.logger, organizationId, }) const app = await applicationModel.getById(applicationId) if ( !app.facebook || !app.facebook.accessToken || !app.facebook.adAccountId || !app.facebook.appId || !app.facebook.appSecret || !app.facebook.pageId || !app.facebook.pixelId ) { this.logger.error('Facebook ads not configured for app', { applicationId, documentId: job.data.document.id, }) } const adCampaignModel = new AdCampaignModel({ logger: this.logger, organizationId, applicationId }) const date = new Date().toISOString().substr(5, 5) const adCampaign = await adCampaignModel.create({ title: `${document.title} ${date}`, link: `${app.host}${document.permalink}`, headlines: [document.title], texts: [], digitalAssetIds: [document.featuredImageId], }) this.logger.debug('Created ad campaign', {adCampaign}) } catch(err) { this.logger.error('Error creating ad campaign', {err}) throw err } } } module.exports = CreateAdCampaignJob