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

View File

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