+/*
+ Rename thumbnails and video filenames to _id.extension
+*/
+
+const each = require('async/each')
+const fs = require('fs')
+const path = require('path')
+const mongoose = require('mongoose')
+
+const constants = require('../constants')
+const logger = require('../../helpers/logger')
+
+const Video = mongoose.model('Video')
+
+exports.up = function (callback) {
+ // Use of lean because the new Video scheme does not have filename field
+ Video.find({ filename: { $ne: null } }).lean().exec(function (err, videos) {
+ if (err) throw err
+
+ each(videos, function (video, callbackEach) {
+ const torrentName = video.filename + '.torrent'
+ const thumbnailName = video.thumbnail
+ const thumbnailExtension = path.extname(thumbnailName)
+ const videoName = video.filename
+ const videoExtension = path.extname(videoName)
+
+ const newTorrentName = video._id + '.torrent'
+ const newThumbnailName = video._id + thumbnailExtension
+ const newVideoName = video._id + videoExtension
+
+ const torrentsDir = constants.CONFIG.STORAGE.TORRENTS_DIR
+ const thumbnailsDir = constants.CONFIG.STORAGE.THUMBNAILS_DIR
+ const videosDir = constants.CONFIG.STORAGE.VIDEOS_DIR
+
+ logger.info('Renaming %s to %s.', torrentsDir + torrentName, torrentsDir + newTorrentName)
+ fs.renameSync(torrentsDir + torrentName, torrentsDir + newTorrentName)
+
+ logger.info('Renaming %s to %s.', thumbnailsDir + thumbnailName, thumbnailsDir + newThumbnailName)
+ fs.renameSync(thumbnailsDir + thumbnailName, thumbnailsDir + newThumbnailName)
+
+ logger.info('Renaming %s to %s.', videosDir + videoName, videosDir + newVideoName)
+ fs.renameSync(videosDir + videoName, videosDir + newVideoName)
+
+ Video.load(video._id, function (err, videoObj) {
+ if (err) return callbackEach(err)
+
+ videoObj.extname = videoExtension
+ videoObj.remoteId = null
+ videoObj.save(callbackEach)
+ })
+ }, callback)
+ })
+}
+
+exports.down = function (callback) {
+ throw new Error('Not implemented.')
+}