+ const to = overrideTo ? overrideTo : videoObject.to
+ const videoData = await videoActivityObjectToDBAttributes(channel, videoObject, to)
+ video.set('name', videoData.name)
+ video.set('uuid', videoData.uuid)
+ video.set('url', videoData.url)
+ video.set('category', videoData.category)
+ video.set('licence', videoData.licence)
+ video.set('language', videoData.language)
+ video.set('description', videoData.description)
+ video.set('support', videoData.support)
+ video.set('nsfw', videoData.nsfw)
+ video.set('commentsEnabled', videoData.commentsEnabled)
+ video.set('waitTranscoding', videoData.waitTranscoding)
+ video.set('state', videoData.state)
+ video.set('duration', videoData.duration)
+ video.set('createdAt', videoData.createdAt)
+ video.set('publishedAt', videoData.publishedAt)
+ video.set('views', videoData.views)
+ video.set('privacy', videoData.privacy)
+ video.set('channelId', videoData.channelId)
+
+ await video.save(sequelizeOptions)
+
+ // Don't block on request
+ generateThumbnailFromUrl(video, videoObject.icon)
+ .catch(err => logger.warn('Cannot generate thumbnail of %s.', videoObject.id, { err }))
+
+ // Remove old video files
+ const videoFileDestroyTasks: Bluebird<void>[] = []
+ for (const videoFile of video.VideoFiles) {
+ videoFileDestroyTasks.push(videoFile.destroy(sequelizeOptions))
+ }
+ await Promise.all(videoFileDestroyTasks)