Fix refreshing external video attributes
This commit is contained in:
parent
601527d795
commit
d382f4e917
2 changed files with 13 additions and 12 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue