]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/initializers/migrations/0040-video-remote-id.js
Server: add migration scripts to the new mongo schemes
[github/Chocobozzz/PeerTube.git] / server / initializers / migrations / 0040-video-remote-id.js
CommitLineData
2550fab3
C
1/*
2 Use remote id as identifier
3*/
4
5const each = require('async/each')
6const map = require('lodash/map')
7const mongoose = require('mongoose')
8const readline = require('readline')
9
10const rl = readline.createInterface({
11 input: process.stdin,
12 output: process.stdout
13})
14
15const logger = require('../../helpers/logger')
16const friends = require('../../lib/friends')
17
18const Pod = mongoose.model('Pod')
19const Video = mongoose.model('Video')
20
21exports.up = function (callback) {
22 Pod.find({}).lean().exec(function (err, pods) {
23 if (err) return callback(err)
24
25 // We need to quit friends first
26 if (pods.length === 0) {
27 return setVideosRemoteId(callback)
28 }
29
30 const timeout = setTimeout(function () {
31 throw new Error('You need to enter a value!')
32 }, 10000)
33
34 rl.question('I am sorry but I need to quit friends for upgrading. Do you want to continue? (yes/*)', function (answer) {
35 if (answer !== 'yes') throw new Error('I cannot continue.')
36
37 clearTimeout(timeout)
38 rl.close()
39
40 const urls = map(pods, 'url')
41 logger.info('Saying goodbye to: ' + urls.join(', '))
42
43 friends.quitFriends(function () {
44 setVideosRemoteId(callback)
45 })
46 })
47 })
48}
49
50exports.down = function (callback) {
51 throw new Error('Not implemented.')
52}
53
54function setVideosRemoteId (callback) {
55 Video.find({}, function (err, videos) {
56 if (err) return callback(err)
57
58 each(videos, function (video, callbackEach) {
59 video.remoteId = null
60 video.save(callbackEach)
61 }, callback)
62 })
63}