Fix refreshing external video attributes

This commit is contained in:
Chocobozzz 2018-10-01 15:34:31 +02:00
parent 601527d795
commit d382f4e917
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 13 additions and 12 deletions

View File

@ -205,7 +205,7 @@ async function updateVideoFromAP (options: {
let videoFieldsSave: any
try {
const updatedVideo: VideoModel = await sequelizeTypescript.transaction(async t => {
await sequelizeTypescript.transaction(async t => {
const sequelizeOptions = {
transaction: t
}
@ -256,8 +256,12 @@ async function updateVideoFromAP (options: {
await Promise.all(destroyTasks)
// Update or add other one
const upsertTasks = videoFileAttributes.map(a => VideoFileModel.upsert(a, sequelizeOptions))
await Promise.all(upsertTasks)
const upsertTasks = videoFileAttributes.map(a => {
return VideoFileModel.upsert<VideoFileModel>(a, { returning: true, transaction: t })
.then(([ file ]) => file)
})
options.video.VideoFiles = await Promise.all(upsertTasks)
}
{
@ -274,13 +278,11 @@ async function updateVideoFromAP (options: {
const videoCaptionsPromises = options.videoObject.subtitleLanguage.map(c => {
return VideoCaptionModel.insertOrReplaceLanguage(options.video.id, c.identifier, t)
})
await Promise.all(videoCaptionsPromises)
options.video.VideoCaptions = await Promise.all(videoCaptionsPromises)
}
})
logger.info('Remote video with uuid %s updated', options.videoObject.uuid)
return updatedVideo
} catch (err) {
if (options.video !== undefined && videoFieldsSave !== undefined) {
resetSequelizeInstance(options.video, videoFieldsSave)
@ -392,12 +394,10 @@ async function refreshVideoIfNeeded (options: {
channel: channelActor.VideoChannel,
updateViews: options.refreshViews
}
const videoUpdated = await retryTransactionWrapper(updateVideoFromAP, updateOptions)
await syncVideoExternalAttributes(videoUpdated, videoObject, options.syncParam)
return videoUpdated
await retryTransactionWrapper(updateVideoFromAP, updateOptions)
await syncVideoExternalAttributes(video, videoObject, options.syncParam)
} catch (err) {
logger.warn('Cannot refresh video.', { err })
logger.warn('Cannot refresh video %s.', options.video.url, { err })
return video
}
}

View File

@ -120,7 +120,8 @@ export class VideoCaptionModel extends Model<VideoCaptionModel> {
language
}
return VideoCaptionModel.upsert(values, { transaction })
return VideoCaptionModel.upsert<VideoCaptionModel>(values, { transaction, returning: true })
.then(([ caption ]) => caption)
}
static listVideoCaptions (videoId: number) {