diff --git a/core/server/api/canary/schedules.js b/core/server/api/canary/schedules.js index 88bb9ab497..f11bcda055 100644 --- a/core/server/api/canary/schedules.js +++ b/core/server/api/canary/schedules.js @@ -37,65 +37,61 @@ module.exports = { const resourceType = frame.options.resource; const publishAPostBySchedulerToleranceInMinutes = config.get('times').publishAPostBySchedulerToleranceInMinutes; - return models.Base.transaction((transacting) => { - const options = { - transacting: transacting, - status: 'scheduled', - forUpdate: true, - id: frame.options.id, - context: { - internal: true + const options = { + status: 'scheduled', + id: frame.options.id, + context: { + internal: true + } + }; + + return api[resourceType].read({id: frame.options.id}, options) + .then((result) => { + resource = result[resourceType][0]; + const publishedAtMoment = moment(resource.published_at); + + if (publishedAtMoment.diff(moment(), 'minutes') > publishAPostBySchedulerToleranceInMinutes) { + return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.notFound')})); } - }; - return api[resourceType].read({id: frame.options.id}, options) - .then((result) => { - resource = result[resourceType][0]; - const publishedAtMoment = moment(resource.published_at); + if (publishedAtMoment.diff(moment(), 'minutes') < publishAPostBySchedulerToleranceInMinutes * -1 && frame.data.force !== true) { + return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.publishInThePast')})); + } - if (publishedAtMoment.diff(moment(), 'minutes') > publishAPostBySchedulerToleranceInMinutes) { - return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.notFound')})); - } + const editedResource = {}; + editedResource[resourceType] = [{ + status: 'published', + updated_at: moment(resource.updated_at).toISOString(true) + }]; - if (publishedAtMoment.diff(moment(), 'minutes') < publishAPostBySchedulerToleranceInMinutes * -1 && frame.data.force !== true) { - return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.publishInThePast')})); - } + return api[resourceType].edit( + editedResource, + _.pick(options, ['context', 'id', 'transacting', 'forUpdate']) + ); + }) + .then((result) => { + const scheduledResource = result[resourceType][0]; - const editedResource = {}; - editedResource[resourceType] = [{ - status: 'published', - updated_at: moment(resource.updated_at).toISOString(true) - }]; + if ( + (scheduledResource.status === 'published' && resource.status !== 'published') || + (scheduledResource.status === 'draft' && resource.status === 'published') + ) { + this.headers.cacheInvalidate = true; + } else if ( + (scheduledResource.status === 'draft' && resource.status !== 'published') || + (scheduledResource.status === 'scheduled' && resource.status !== 'scheduled') + ) { + this.headers.cacheInvalidate = { + value: urlUtils.urlFor({ + relativeUrl: urlUtils.urlJoin('/p', scheduledResource.uuid, '/') + }) + }; + } else { + this.headers.cacheInvalidate = false; + } - return api[resourceType].edit( - editedResource, - _.pick(options, ['context', 'id', 'transacting', 'forUpdate']) - ); - }) - .then((result) => { - const scheduledResource = result[resourceType][0]; - - if ( - (scheduledResource.status === 'published' && resource.status !== 'published') || - (scheduledResource.status === 'draft' && resource.status === 'published') - ) { - this.headers.cacheInvalidate = true; - } else if ( - (scheduledResource.status === 'draft' && resource.status !== 'published') || - (scheduledResource.status === 'scheduled' && resource.status !== 'scheduled') - ) { - this.headers.cacheInvalidate = { - value: urlUtils.urlFor({ - relativeUrl: urlUtils.urlJoin('/p', scheduledResource.uuid, '/') - }) - }; - } else { - this.headers.cacheInvalidate = false; - } - - return result; - }); - }); + return result; + }); } }, diff --git a/core/server/api/v2/schedules.js b/core/server/api/v2/schedules.js index 88bb9ab497..f11bcda055 100644 --- a/core/server/api/v2/schedules.js +++ b/core/server/api/v2/schedules.js @@ -37,65 +37,61 @@ module.exports = { const resourceType = frame.options.resource; const publishAPostBySchedulerToleranceInMinutes = config.get('times').publishAPostBySchedulerToleranceInMinutes; - return models.Base.transaction((transacting) => { - const options = { - transacting: transacting, - status: 'scheduled', - forUpdate: true, - id: frame.options.id, - context: { - internal: true + const options = { + status: 'scheduled', + id: frame.options.id, + context: { + internal: true + } + }; + + return api[resourceType].read({id: frame.options.id}, options) + .then((result) => { + resource = result[resourceType][0]; + const publishedAtMoment = moment(resource.published_at); + + if (publishedAtMoment.diff(moment(), 'minutes') > publishAPostBySchedulerToleranceInMinutes) { + return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.notFound')})); } - }; - return api[resourceType].read({id: frame.options.id}, options) - .then((result) => { - resource = result[resourceType][0]; - const publishedAtMoment = moment(resource.published_at); + if (publishedAtMoment.diff(moment(), 'minutes') < publishAPostBySchedulerToleranceInMinutes * -1 && frame.data.force !== true) { + return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.publishInThePast')})); + } - if (publishedAtMoment.diff(moment(), 'minutes') > publishAPostBySchedulerToleranceInMinutes) { - return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.notFound')})); - } + const editedResource = {}; + editedResource[resourceType] = [{ + status: 'published', + updated_at: moment(resource.updated_at).toISOString(true) + }]; - if (publishedAtMoment.diff(moment(), 'minutes') < publishAPostBySchedulerToleranceInMinutes * -1 && frame.data.force !== true) { - return Promise.reject(new errors.NotFoundError({message: i18n.t('errors.api.job.publishInThePast')})); - } + return api[resourceType].edit( + editedResource, + _.pick(options, ['context', 'id', 'transacting', 'forUpdate']) + ); + }) + .then((result) => { + const scheduledResource = result[resourceType][0]; - const editedResource = {}; - editedResource[resourceType] = [{ - status: 'published', - updated_at: moment(resource.updated_at).toISOString(true) - }]; + if ( + (scheduledResource.status === 'published' && resource.status !== 'published') || + (scheduledResource.status === 'draft' && resource.status === 'published') + ) { + this.headers.cacheInvalidate = true; + } else if ( + (scheduledResource.status === 'draft' && resource.status !== 'published') || + (scheduledResource.status === 'scheduled' && resource.status !== 'scheduled') + ) { + this.headers.cacheInvalidate = { + value: urlUtils.urlFor({ + relativeUrl: urlUtils.urlJoin('/p', scheduledResource.uuid, '/') + }) + }; + } else { + this.headers.cacheInvalidate = false; + } - return api[resourceType].edit( - editedResource, - _.pick(options, ['context', 'id', 'transacting', 'forUpdate']) - ); - }) - .then((result) => { - const scheduledResource = result[resourceType][0]; - - if ( - (scheduledResource.status === 'published' && resource.status !== 'published') || - (scheduledResource.status === 'draft' && resource.status === 'published') - ) { - this.headers.cacheInvalidate = true; - } else if ( - (scheduledResource.status === 'draft' && resource.status !== 'published') || - (scheduledResource.status === 'scheduled' && resource.status !== 'scheduled') - ) { - this.headers.cacheInvalidate = { - value: urlUtils.urlFor({ - relativeUrl: urlUtils.urlJoin('/p', scheduledResource.uuid, '/') - }) - }; - } else { - this.headers.cacheInvalidate = false; - } - - return result; - }); - }); + return result; + }); } },