X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fremote%2Fvideos.ts;h=3ecc62ada1466a667c3983dd09898bd8432fc722;hb=b7a485121d71c95fcf5e432e4cc745cf91af4f93;hp=bf442c6e58627ba66c73507cfbc24285cd7a719c;hpb=eb08047657e739bcd9e592d76307befa3998482b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/remote/videos.ts b/server/controllers/api/remote/videos.ts index bf442c6e5..3ecc62ada 100644 --- a/server/controllers/api/remote/videos.ts +++ b/server/controllers/api/remote/videos.ts @@ -16,7 +16,7 @@ import { remoteQaduVideosValidator, remoteEventsVideosValidator } from '../../../middlewares' -import { logger, retryTransactionWrapper } from '../../../helpers' +import { logger, retryTransactionWrapper, resetSequelizeInstance } from '../../../helpers' import { quickAndDirtyUpdatesVideoToFriends, fetchVideoChannelByHostAndUUID } from '../../../lib' import { PodInstance, VideoFileInstance } from '../../../models' import { @@ -35,6 +35,7 @@ import { RemoteVideoAuthorRemoveData, RemoteVideoAuthorCreateData } from '../../../../shared' +import { VideoInstance } from '../../../models/video/video-interface' const ENDPOINT_ACTIONS = REQUEST_ENDPOINT_ACTIONS[REQUEST_ENDPOINTS.VIDEOS] @@ -145,7 +146,7 @@ async function processVideosEventsRetryWrapper (eventData: RemoteVideoEventData, async function processVideosEvents (eventData: RemoteVideoEventData, fromPod: PodInstance) { await db.sequelize.transaction(async t => { const sequelizeOptions = { transaction: t } - const videoInstance = await fetchVideoByUUID(eventData.uuid, t) + const videoInstance = await fetchLocalVideoByUUID(eventData.uuid, t) let columnToUpdate let qaduType @@ -257,7 +258,7 @@ async function addRemoteVideo (videoToCreateData: RemoteVideoCreateData, fromPod licence: videoToCreateData.licence, language: videoToCreateData.language, nsfw: videoToCreateData.nsfw, - description: videoToCreateData.description, + description: videoToCreateData.truncatedDescription, channelId: videoChannel.id, duration: videoToCreateData.duration, createdAt: videoToCreateData.createdAt, @@ -306,6 +307,8 @@ async function updateRemoteVideoRetryWrapper (videoAttributesToUpdate: RemoteVid async function updateRemoteVideo (videoAttributesToUpdate: RemoteVideoUpdateData, fromPod: PodInstance) { logger.debug('Updating remote video "%s".', videoAttributesToUpdate.uuid) + let videoInstance: VideoInstance + let videoFieldsSave: object try { await db.sequelize.transaction(async t => { @@ -314,6 +317,7 @@ async function updateRemoteVideo (videoAttributesToUpdate: RemoteVideoUpdateData } const videoInstance = await fetchVideoByHostAndUUID(fromPod.host, videoAttributesToUpdate.uuid, t) + videoFieldsSave = videoInstance.toJSON() const tags = videoAttributesToUpdate.tags const tagInstances = await db.Tag.findOrCreateTags(tags, t) @@ -323,7 +327,7 @@ async function updateRemoteVideo (videoAttributesToUpdate: RemoteVideoUpdateData videoInstance.set('licence', videoAttributesToUpdate.licence) videoInstance.set('language', videoAttributesToUpdate.language) videoInstance.set('nsfw', videoAttributesToUpdate.nsfw) - videoInstance.set('description', videoAttributesToUpdate.description) + videoInstance.set('description', videoAttributesToUpdate.truncatedDescription) videoInstance.set('duration', videoAttributesToUpdate.duration) videoInstance.set('createdAt', videoAttributesToUpdate.createdAt) videoInstance.set('updatedAt', videoAttributesToUpdate.updatedAt) @@ -360,6 +364,10 @@ async function updateRemoteVideo (videoAttributesToUpdate: RemoteVideoUpdateData logger.info('Remote video with uuid %s updated', videoAttributesToUpdate.uuid) } catch (err) { + if (videoInstance !== undefined && videoFieldsSave !== undefined) { + resetSequelizeInstance(videoInstance, videoFieldsSave) + } + // This is just a debug because we will retry the insert logger.debug('Cannot update the remote video.', err) throw err @@ -538,7 +546,7 @@ async function reportAbuseRemoteVideo (reportData: RemoteVideoReportAbuseData, f logger.debug('Reporting remote abuse for video %s.', reportData.videoUUID) await db.sequelize.transaction(async t => { - const videoInstance = await fetchVideoByUUID(reportData.videoUUID, t) + const videoInstance = await fetchLocalVideoByUUID(reportData.videoUUID, t) const videoAbuseData = { reporterUsername: reportData.reporterUsername, reason: reportData.reportReason, @@ -553,9 +561,9 @@ async function reportAbuseRemoteVideo (reportData: RemoteVideoReportAbuseData, f logger.info('Remote abuse for video uuid %s created', reportData.videoUUID) } -async function fetchVideoByUUID (id: string, t: Sequelize.Transaction) { +async function fetchLocalVideoByUUID (id: string, t: Sequelize.Transaction) { try { - const video = await db.Video.loadByUUID(id, t) + const video = await db.Video.loadLocalVideoByUUID(id, t) if (!video) throw new Error('Video ' + id + ' not found')