import { sequelizeTypescript } from '@server/initializers/database'
import { VideoModel } from '@server/models/video/video'
import { VideoJobInfoModel } from '@server/models/video/video-job-info'
-import { MVideoFullLight, MVideoUUID } from '@server/types/models'
+import { MVideo, MVideoFullLight, MVideoUUID } from '@server/types/models'
import { VideoState } from '@shared/models'
import { federateVideoIfNeeded } from './activitypub/videos'
import { Notifier } from './notifier'
}
}
-function moveToFailedState (video: MVideoFullLight) {
- return sequelizeTypescript.transaction(async t => {
- await video.setNewState(VideoState.TRANSCODING_FAILED, false, t)
- })
+function moveToFailedTranscodingState (video: MVideo) {
+ if (video.state === VideoState.TRANSCODING_FAILED) return
+
+ return video.setNewState(VideoState.TRANSCODING_FAILED, false, undefined)
+}
+
+function moveToFailedMoveToObjectStorageState (video: MVideo) {
+ if (video.state === VideoState.TO_MOVE_TO_EXTERNAL_STORAGE_FAILED) return
+
+ return video.setNewState(VideoState.TO_MOVE_TO_EXTERNAL_STORAGE_FAILED, false, undefined)
}
// ---------------------------------------------------------------------------
export {
buildNextVideoState,
moveToExternalStorageState,
- moveToFailedState,
+ moveToFailedTranscodingState,
+ moveToFailedMoveToObjectStorageState,
moveToNextState
}
// Live videos are always federated, so it's not a new video
await federateVideoIfNeeded(video, isNewVideo, transaction)
- if (isNewVideo) Notifier.Instance.notifyOnNewVideoIfNeeded(video)
+ if (!isNewVideo) return
+
+ Notifier.Instance.notifyOnNewVideoIfNeeded(video)
if (previousState === VideoState.TO_TRANSCODE) {
Notifier.Instance.notifyOnVideoPublishedAfterTranscoding(video)