UNPKG

paradigm-core

Version:
92 lines (70 loc) 2.28 kB
const { Queue, ApplicationsPlugin: {ApplicationModel} } = require('structure-core') const {DocumentModel} = require('../../documents') class CreateUpdateArticleQueue extends Queue { constructor(options = {}) { super({ label: 'facebook-ia--create-update-article', jobOpts: { // we need to wait for facebook to finish importing previous versions attempts: 60, backoff: { type: 'fixed', delay: 60000, } } }) } async handler(job) { try { this.logger.debug( 'Creating or updating facebook instant article', {data: job.data} ) const documentModel = new DocumentModel({ organizationId: job.data.organizationId, applicationId: job.data.applicationId, logger: this.logger, }) const doc = await documentModel.getById(job.data.documentId) if (!doc) { throw 'Document not found' } const applicationModel = new ApplicationModel({ organizationId: job.data.organizationId, logger: this.logger, }) const app = await applicationModel.getById(doc.applicationId) this.logger.debug( 'Got app for creating or updating facebook instant article', {data: job.data, doc: doc.id, app: app.id} ) if (!app.facebook || !app.facebook.pageAccessToken || !app.facebook.pageId) { this.logger.debug('Facebook IA not set up for application') return } const FacebookInstantArticleModel = require('../models/facebook-instant-article') const facebookInstantArticleModel = new FacebookInstantArticleModel({ organizationId: doc.organizationId, applicationId: doc.applicationId, logger: this.logger }) await facebookInstantArticleModel.createOrUpdateForDocument(job.data.documentId) this.logger.debug( 'Finished creating or updating facebook instant article', {data: job.data, doc: doc.id, app: app.id} ) } catch(error) { this.logger.error( 'Failed to create or update facebook instant article', { data: job.data, error } ) throw error } } } module.exports = new CreateUpdateArticleQueue()