import {
generateThumbnailFromUrl,
getOrCreateAccountAndVideoAndChannel,
+ getOrCreateVideoChannel,
videoActivityObjectToDBAttributes,
videoFileActivityUrlToDBAttributes
} from '../videos'
const res = await getOrCreateAccountAndVideoAndChannel(videoAttributesToUpdate.id)
+ // Fetch video channel outside the transaction
+ const newVideoChannelActor = await getOrCreateVideoChannel(videoAttributesToUpdate)
+ const newVideoChannel = newVideoChannelActor.VideoChannel
+
logger.debug('Updating remote video "%s".', videoAttributesToUpdate.uuid)
let videoInstance = res.video
let videoFieldsSave: any
videoFieldsSave = videoInstance.toJSON()
+ // Check actor has the right to update the video
const videoChannel = videoInstance.VideoChannel
if (videoChannel.Account.Actor.id !== actor.id) {
throw new Error('Account ' + actor.url + ' does not own video channel ' + videoChannel.Actor.url)
}
- const videoData = await videoActivityObjectToDBAttributes(videoChannel, videoAttributesToUpdate, activity.to)
+ const videoData = await videoActivityObjectToDBAttributes(newVideoChannel, videoAttributesToUpdate, activity.to)
videoInstance.set('name', videoData.name)
videoInstance.set('uuid', videoData.uuid)
videoInstance.set('url', videoData.url)
videoInstance.set('updatedAt', videoData.updatedAt)
videoInstance.set('views', videoData.views)
videoInstance.set('privacy', videoData.privacy)
+ videoInstance.set('channelId', videoData.channelId)
await videoInstance.save(sequelizeOptions)
// Don't block on request
generateThumbnailFromUrl(videoInstance, videoAttributesToUpdate.icon)
- .catch(err => logger.warn('Cannot generate thumbnail of %s.', videoAttributesToUpdate.id, err))
+ .catch(err => logger.warn('Cannot generate thumbnail of %s.', videoAttributesToUpdate.id, { err }))
// Remove old video files
const videoFileDestroyTasks: Bluebird<void>[] = []
}
// This is just a debug because we will retry the insert
- logger.debug('Cannot update the remote video.', err)
+ logger.debug('Cannot update the remote video.', { err })
throw err
}
}
}
// This is just a debug because we will retry the insert
- logger.debug('Cannot update the remote account.', err)
+ logger.debug('Cannot update the remote account.', { err })
throw err
}
}