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
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue