+
+ return addTranscodingJob(dataInput, jobOptions)
+}
+
+async function addTranscodingJob (payload: VideoTranscodingPayload, options: CreateJobOptions = {}) {
+ await VideoJobInfoModel.increaseOrCreate(payload.videoUUID, 'pendingTranscode')
+
+ return JobQueue.Instance.createJobWithPromise({ type: 'video-transcoding', payload: payload }, options)
+}
+
+async function addMoveToObjectStorageJob (video: MVideoUUID, isNewVideo = true) {
+ await VideoJobInfoModel.increaseOrCreate(video.uuid, 'pendingMove')
+
+ const dataInput = { videoUUID: video.uuid, isNewVideo }
+ return JobQueue.Instance.createJobWithPromise({ type: 'move-to-object-storage', payload: dataInput })
+}
+
+async function getTranscodingJobPriority (user: MUserId) {
+ const now = new Date()
+ const lastWeek = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7)
+
+ const videoUploadedByUser = await VideoModel.countVideosUploadedByUserSince(user.id, lastWeek)
+
+ return JOB_PRIORITY.TRANSCODING + videoUploadedByUser