diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2016-06-30 22:39:08 +0200 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2016-06-30 22:39:08 +0200 |
commit | a3ee6fa22dee4b68fcde9cd23708b471db446e11 (patch) | |
tree | b05543f6d858c52dd4757123bc605277ede96983 | |
parent | d14b3e37a2c0d647b59259bf2ca059b5817f144c (diff) | |
download | PeerTube-a3ee6fa22dee4b68fcde9cd23708b471db446e11.tar.gz PeerTube-a3ee6fa22dee4b68fcde9cd23708b471db446e11.tar.zst PeerTube-a3ee6fa22dee4b68fcde9cd23708b471db446e11.zip |
Pod model refractoring -> use mongoose api
-rw-r--r-- | server/controllers/api/v1/pods.js | 19 | ||||
-rw-r--r-- | server/helpers/customValidators.js | 1 | ||||
-rw-r--r-- | server/initializers/constants.js | 9 | ||||
-rw-r--r-- | server/initializers/database.js | 1 | ||||
-rw-r--r-- | server/lib/friends.js | 20 | ||||
-rw-r--r-- | server/middlewares/secure.js | 6 | ||||
-rw-r--r-- | server/models/pods.js | 102 | ||||
-rw-r--r-- | server/models/request.js | 48 |
8 files changed, 109 insertions, 97 deletions
diff --git a/server/controllers/api/v1/pods.js b/server/controllers/api/v1/pods.js index 9dd9197b3..feb6bd958 100644 --- a/server/controllers/api/v1/pods.js +++ b/server/controllers/api/v1/pods.js | |||
@@ -7,12 +7,12 @@ const mongoose = require('mongoose') | |||
7 | const logger = require('../../../helpers/logger') | 7 | const logger = require('../../../helpers/logger') |
8 | const friends = require('../../../lib/friends') | 8 | const friends = require('../../../lib/friends') |
9 | const middlewares = require('../../../middlewares') | 9 | const middlewares = require('../../../middlewares') |
10 | const Pods = require('../../../models/pods') | ||
11 | const oAuth2 = middlewares.oauth2 | 10 | const oAuth2 = middlewares.oauth2 |
12 | const reqValidator = middlewares.reqValidators.pods | 11 | const reqValidator = middlewares.reqValidators.pods |
13 | const signatureValidator = middlewares.reqValidators.remote.signature | 12 | const signatureValidator = middlewares.reqValidators.remote.signature |
14 | 13 | ||
15 | const router = express.Router() | 14 | const router = express.Router() |
15 | const Pod = mongoose.model('Pod') | ||
16 | const Video = mongoose.model('Video') | 16 | const Video = mongoose.model('Video') |
17 | 17 | ||
18 | router.get('/', listPodsUrl) | 18 | router.get('/', listPodsUrl) |
@@ -33,7 +33,11 @@ function addPods (req, res, next) { | |||
33 | 33 | ||
34 | async.waterfall([ | 34 | async.waterfall([ |
35 | function addPod (callback) { | 35 | function addPod (callback) { |
36 | Pods.add(informations, callback) | 36 | const pod = new Pod(informations) |
37 | pod.save(function (err, podCreated) { | ||
38 | // Be sure about the number of parameters for the callback | ||
39 | return callback(err, podCreated) | ||
40 | }) | ||
37 | }, | 41 | }, |
38 | 42 | ||
39 | function sendMyVideos (podCreated, callback) { | 43 | function sendMyVideos (podCreated, callback) { |
@@ -60,7 +64,7 @@ function addPods (req, res, next) { | |||
60 | } | 64 | } |
61 | 65 | ||
62 | function listPodsUrl (req, res, next) { | 66 | function listPodsUrl (req, res, next) { |
63 | Pods.listAllUrls(function (err, podsUrlList) { | 67 | Pod.listOnlyUrls(function (err, podsUrlList) { |
64 | if (err) return next(err) | 68 | if (err) return next(err) |
65 | 69 | ||
66 | res.json(podsUrlList) | 70 | res.json(podsUrlList) |
@@ -79,8 +83,13 @@ function removePods (req, res, next) { | |||
79 | const url = req.body.signature.url | 83 | const url = req.body.signature.url |
80 | 84 | ||
81 | async.waterfall([ | 85 | async.waterfall([ |
82 | function (callback) { | 86 | function loadPod (callback) { |
83 | Pods.remove(url, function (err) { | 87 | Pod.loadByUrl(url, callback) |
88 | }, | ||
89 | |||
90 | function removePod (pod, callback) { | ||
91 | pod.remove(function (err) { | ||
92 | // Be sure we only return one argument in the callback | ||
84 | return callback(err) | 93 | return callback(err) |
85 | }) | 94 | }) |
86 | }, | 95 | }, |
diff --git a/server/helpers/customValidators.js b/server/helpers/customValidators.js index 4d6139a3d..b666644c0 100644 --- a/server/helpers/customValidators.js +++ b/server/helpers/customValidators.js | |||
@@ -85,6 +85,7 @@ function isVideoNameValid (value) { | |||
85 | } | 85 | } |
86 | 86 | ||
87 | function isVideoPodUrlValid (value) { | 87 | function isVideoPodUrlValid (value) { |
88 | // TODO: set options (TLD...) | ||
88 | return validator.isURL(value) | 89 | return validator.isURL(value) |
89 | } | 90 | } |
90 | 91 | ||
diff --git a/server/initializers/constants.js b/server/initializers/constants.js index 1f9876c4b..55c555d04 100644 --- a/server/initializers/constants.js +++ b/server/initializers/constants.js | |||
@@ -4,7 +4,10 @@ | |||
4 | const API_VERSION = 'v1' | 4 | const API_VERSION = 'v1' |
5 | 5 | ||
6 | // Score a pod has when we create it as a friend | 6 | // Score a pod has when we create it as a friend |
7 | let FRIEND_BASE_SCORE = 100 | 7 | const FRIEND_SCORE = { |
8 | BASE: 100, | ||
9 | MAX: 1000 | ||
10 | } | ||
8 | 11 | ||
9 | // Time to wait between requests to the friends (10 min) | 12 | // Time to wait between requests to the friends (10 min) |
10 | let INTERVAL = 600000 | 13 | let INTERVAL = 600000 |
@@ -54,7 +57,7 @@ const VIDEOS_CONSTRAINTS_FIELDS = { | |||
54 | 57 | ||
55 | // Special constants for a test instance | 58 | // Special constants for a test instance |
56 | if (isTestInstance() === true) { | 59 | if (isTestInstance() === true) { |
57 | FRIEND_BASE_SCORE = 20 | 60 | FRIEND_SCORE.BASE = 20 |
58 | INTERVAL = 10000 | 61 | INTERVAL = 10000 |
59 | VIDEOS_CONSTRAINTS_FIELDS.DURATION.max = 14 | 62 | VIDEOS_CONSTRAINTS_FIELDS.DURATION.max = 14 |
60 | } | 63 | } |
@@ -63,7 +66,7 @@ if (isTestInstance() === true) { | |||
63 | 66 | ||
64 | module.exports = { | 67 | module.exports = { |
65 | API_VERSION: API_VERSION, | 68 | API_VERSION: API_VERSION, |
66 | FRIEND_BASE_SCORE: FRIEND_BASE_SCORE, | 69 | FRIEND_SCORE: FRIEND_SCORE, |
67 | INTERVAL: INTERVAL, | 70 | INTERVAL: INTERVAL, |
68 | PAGINATION_COUNT_DEFAULT: PAGINATION_COUNT_DEFAULT, | 71 | PAGINATION_COUNT_DEFAULT: PAGINATION_COUNT_DEFAULT, |
69 | PODS_SCORE: PODS_SCORE, | 72 | PODS_SCORE: PODS_SCORE, |
diff --git a/server/initializers/database.js b/server/initializers/database.js index d0d969663..e97531781 100644 --- a/server/initializers/database.js +++ b/server/initializers/database.js | |||
@@ -6,6 +6,7 @@ const mongoose = require('mongoose') | |||
6 | const logger = require('../helpers/logger') | 6 | const logger = require('../helpers/logger') |
7 | 7 | ||
8 | // Bootstrap models | 8 | // Bootstrap models |
9 | require('../models/pods') | ||
9 | require('../models/video') | 10 | require('../models/video') |
10 | // Request model needs Video model | 11 | // Request model needs Video model |
11 | require('../models/request') | 12 | require('../models/request') |
diff --git a/server/lib/friends.js b/server/lib/friends.js index 617cc1ab4..a93467c13 100644 --- a/server/lib/friends.js +++ b/server/lib/friends.js | |||
@@ -9,16 +9,16 @@ const request = require('request') | |||
9 | const constants = require('../initializers/constants') | 9 | const constants = require('../initializers/constants') |
10 | const logger = require('../helpers/logger') | 10 | const logger = require('../helpers/logger') |
11 | const peertubeCrypto = require('../helpers/peertubeCrypto') | 11 | const peertubeCrypto = require('../helpers/peertubeCrypto') |
12 | const Pods = require('../models/pods') | ||
13 | const requests = require('../helpers/requests') | 12 | const requests = require('../helpers/requests') |
14 | 13 | ||
15 | const http = config.get('webserver.https') ? 'https' : 'http' | 14 | const http = config.get('webserver.https') ? 'https' : 'http' |
16 | const host = config.get('webserver.host') | 15 | const host = config.get('webserver.host') |
17 | const port = config.get('webserver.port') | 16 | const port = config.get('webserver.port') |
17 | const Pod = mongoose.model('Pod') | ||
18 | const Request = mongoose.model('Request') | 18 | const Request = mongoose.model('Request') |
19 | const Video = mongoose.model('Video') | 19 | const Video = mongoose.model('Video') |
20 | 20 | ||
21 | const pods = { | 21 | const friends = { |
22 | addVideoToFriends: addVideoToFriends, | 22 | addVideoToFriends: addVideoToFriends, |
23 | hasFriends: hasFriends, | 23 | hasFriends: hasFriends, |
24 | getMyCertificate: getMyCertificate, | 24 | getMyCertificate: getMyCertificate, |
@@ -33,7 +33,7 @@ function addVideoToFriends (video) { | |||
33 | } | 33 | } |
34 | 34 | ||
35 | function hasFriends (callback) { | 35 | function hasFriends (callback) { |
36 | Pods.count(function (err, count) { | 36 | Pod.countAll(function (err, count) { |
37 | if (err) return callback(err) | 37 | if (err) return callback(err) |
38 | 38 | ||
39 | const hasFriends = (count !== 0) | 39 | const hasFriends = (count !== 0) |
@@ -79,7 +79,7 @@ function quitFriends (callback) { | |||
79 | 79 | ||
80 | async.waterfall([ | 80 | async.waterfall([ |
81 | function getPodsList (callbackAsync) { | 81 | function getPodsList (callbackAsync) { |
82 | return Pods.list(callbackAsync) | 82 | return Pod.list(callbackAsync) |
83 | }, | 83 | }, |
84 | 84 | ||
85 | function announceIQuitMyFriends (pods, callbackAsync) { | 85 | function announceIQuitMyFriends (pods, callbackAsync) { |
@@ -106,7 +106,7 @@ function quitFriends (callback) { | |||
106 | }, | 106 | }, |
107 | 107 | ||
108 | function removePodsFromDB (callbackAsync) { | 108 | function removePodsFromDB (callbackAsync) { |
109 | Pods.removeAll(function (err) { | 109 | Pod.removeAll(function (err) { |
110 | return callbackAsync(err) | 110 | return callbackAsync(err) |
111 | }) | 111 | }) |
112 | }, | 112 | }, |
@@ -160,7 +160,7 @@ function sendOwnedVideosToPod (podId) { | |||
160 | 160 | ||
161 | // --------------------------------------------------------------------------- | 161 | // --------------------------------------------------------------------------- |
162 | 162 | ||
163 | module.exports = pods | 163 | module.exports = friends |
164 | 164 | ||
165 | // --------------------------------------------------------------------------- | 165 | // --------------------------------------------------------------------------- |
166 | 166 | ||
@@ -230,8 +230,12 @@ function makeRequestsToWinningPods (cert, podsList, callback) { | |||
230 | } | 230 | } |
231 | 231 | ||
232 | if (res.statusCode === 200) { | 232 | if (res.statusCode === 200) { |
233 | Pods.add({ url: pod.url, publicKey: body.cert, score: constants.FRIEND_BASE_SCORE }, function (err, podCreated) { | 233 | const podObj = new Pod({ url: pod.url, publicKey: body.cert }) |
234 | if (err) logger.error('Cannot add friend %s pod.', pod.url) | 234 | podObj.save(function (err, podCreated) { |
235 | if (err) { | ||
236 | logger.error('Cannot add friend %s pod.', pod.url, { error: err }) | ||
237 | return callbackEach() | ||
238 | } | ||
235 | 239 | ||
236 | // Add our videos to the request scheduler | 240 | // Add our videos to the request scheduler |
237 | sendOwnedVideosToPod(podCreated._id) | 241 | sendOwnedVideosToPod(podCreated._id) |
diff --git a/server/middlewares/secure.js b/server/middlewares/secure.js index ad7b0fbf7..fbaf4d0f2 100644 --- a/server/middlewares/secure.js +++ b/server/middlewares/secure.js | |||
@@ -1,8 +1,10 @@ | |||
1 | 'use strict' | 1 | 'use strict' |
2 | 2 | ||
3 | const logger = require('../helpers/logger') | 3 | const logger = require('../helpers/logger') |
4 | const mongoose = require('mongoose') | ||
4 | const peertubeCrypto = require('../helpers/peertubeCrypto') | 5 | const peertubeCrypto = require('../helpers/peertubeCrypto') |
5 | const Pods = require('../models/pods') | 6 | |
7 | const Pod = mongoose.model('Pod') | ||
6 | 8 | ||
7 | const secureMiddleware = { | 9 | const secureMiddleware = { |
8 | decryptBody: decryptBody | 10 | decryptBody: decryptBody |
@@ -10,7 +12,7 @@ const secureMiddleware = { | |||
10 | 12 | ||
11 | function decryptBody (req, res, next) { | 13 | function decryptBody (req, res, next) { |
12 | const url = req.body.signature.url | 14 | const url = req.body.signature.url |
13 | Pods.findByUrl(url, function (err, pod) { | 15 | Pod.loadByUrl(url, function (err, pod) { |
14 | if (err) { | 16 | if (err) { |
15 | logger.error('Cannot get signed url in decryptBody.', { error: err }) | 17 | logger.error('Cannot get signed url in decryptBody.', { error: err }) |
16 | return res.sendStatus(500) | 18 | return res.sendStatus(500) |
diff --git a/server/models/pods.js b/server/models/pods.js index 9502d92e4..bf43d7b25 100644 --- a/server/models/pods.js +++ b/server/models/pods.js | |||
@@ -2,107 +2,89 @@ | |||
2 | 2 | ||
3 | const mongoose = require('mongoose') | 3 | const mongoose = require('mongoose') |
4 | const map = require('lodash/map') | 4 | const map = require('lodash/map') |
5 | const validator = require('express-validator').validator | ||
5 | 6 | ||
6 | const constants = require('../initializers/constants') | 7 | const constants = require('../initializers/constants') |
7 | const logger = require('../helpers/logger') | ||
8 | 8 | ||
9 | // --------------------------------------------------------------------------- | 9 | // --------------------------------------------------------------------------- |
10 | 10 | ||
11 | const podsSchema = mongoose.Schema({ | 11 | const PodSchema = mongoose.Schema({ |
12 | url: String, | 12 | url: String, |
13 | publicKey: String, | 13 | publicKey: String, |
14 | score: { type: Number, max: constants.FRIEND_BASE_SCORE } | 14 | score: { type: Number, max: constants.FRIEND_SCORE.MAX } |
15 | }) | 15 | }) |
16 | const PodsDB = mongoose.model('pods', podsSchema) | ||
17 | 16 | ||
18 | // --------------------------------------------------------------------------- | 17 | // TODO: set options (TLD...) |
18 | PodSchema.path('url').validate(validator.isURL) | ||
19 | PodSchema.path('publicKey').required(true) | ||
20 | PodSchema.path('score').validate(function (value) { return !isNaN(value) }) | ||
19 | 21 | ||
20 | const Pods = { | 22 | PodSchema.statics = { |
21 | add: add, | 23 | countAll: countAll, |
22 | count: count, | ||
23 | findById: findById, | ||
24 | findByUrl: findByUrl, | ||
25 | findBadPods: findBadPods, | ||
26 | incrementScores: incrementScores, | 24 | incrementScores: incrementScores, |
27 | list: list, | 25 | list: list, |
28 | listAllIds: listAllIds, | 26 | listAllIds: listAllIds, |
29 | listAllUrls: listAllUrls, | 27 | listOnlyUrls: listOnlyUrls, |
30 | remove: remove, | 28 | listBadPods: listBadPods, |
31 | removeAll: removeAll, | 29 | load: load, |
32 | removeAllByIds: removeAllByIds | 30 | loadByUrl: loadByUrl, |
31 | removeAll: removeAll | ||
33 | } | 32 | } |
34 | 33 | ||
35 | // TODO: check if the pod is not already a friend | 34 | PodSchema.pre('save', function (next) { |
36 | function add (data, callback) { | 35 | const self = this |
37 | if (!callback) callback = function () {} | ||
38 | const params = { | ||
39 | url: data.url, | ||
40 | publicKey: data.publicKey, | ||
41 | score: constants.FRIEND_BASE_SCORE | ||
42 | } | ||
43 | 36 | ||
44 | PodsDB.create(params, callback) | 37 | Pod.loadByUrl(this.url, function (err, pod) { |
45 | } | 38 | if (err) return next(err) |
46 | 39 | ||
47 | function count (callback) { | 40 | if (pod) return next(new Error('Pod already exists.')) |
48 | return PodsDB.count(callback) | ||
49 | } | ||
50 | 41 | ||
51 | function findBadPods (callback) { | 42 | self.score = constants.FRIEND_SCORE.BASE |
52 | PodsDB.find({ score: 0 }, callback) | 43 | return next() |
53 | } | 44 | }) |
45 | }) | ||
54 | 46 | ||
55 | function findById (id, callback) { | 47 | const Pod = mongoose.model('Pod', PodSchema) |
56 | PodsDB.findById(id, callback) | ||
57 | } | ||
58 | 48 | ||
59 | function findByUrl (url, callback) { | 49 | // ------------------------------ Statics ------------------------------ |
60 | PodsDB.findOne({ url: url }, callback) | 50 | |
51 | function countAll (callback) { | ||
52 | return this.count(callback) | ||
61 | } | 53 | } |
62 | 54 | ||
63 | function incrementScores (ids, value, callback) { | 55 | function incrementScores (ids, value, callback) { |
64 | if (!callback) callback = function () {} | 56 | if (!callback) callback = function () {} |
65 | PodsDB.update({ _id: { $in: ids } }, { $inc: { score: value } }, { multi: true }, callback) | 57 | return this.update({ _id: { $in: ids } }, { $inc: { score: value } }, { multi: true }, callback) |
66 | } | 58 | } |
67 | 59 | ||
68 | function list (callback) { | 60 | function list (callback) { |
69 | PodsDB.find(function (err, podsList) { | 61 | return this.find(callback) |
70 | if (err) { | ||
71 | logger.error('Cannot get the list of the pods.') | ||
72 | return callback(err) | ||
73 | } | ||
74 | |||
75 | return callback(null, podsList) | ||
76 | }) | ||
77 | } | 62 | } |
78 | 63 | ||
79 | function listAllIds (callback) { | 64 | function listAllIds (callback) { |
80 | return PodsDB.find({}, { _id: 1 }, function (err, pods) { | 65 | return this.find({}, { _id: 1 }, function (err, pods) { |
81 | if (err) return callback(err) | 66 | if (err) return callback(err) |
82 | 67 | ||
83 | return callback(null, map(pods, '_id')) | 68 | return callback(null, map(pods, '_id')) |
84 | }) | 69 | }) |
85 | } | 70 | } |
86 | 71 | ||
87 | function listAllUrls (callback) { | 72 | function listOnlyUrls (callback) { |
88 | return PodsDB.find({}, { _id: 0, url: 1 }, callback) | 73 | return this.find({}, { _id: 0, url: 1 }, callback) |
89 | } | 74 | } |
90 | 75 | ||
91 | function remove (url, callback) { | 76 | function listBadPods (callback) { |
92 | if (!callback) callback = function () {} | 77 | return this.find({ score: 0 }, callback) |
93 | PodsDB.remove({ url: url }, callback) | ||
94 | } | 78 | } |
95 | 79 | ||
96 | function removeAll (callback) { | 80 | function load (id, callback) { |
97 | if (!callback) callback = function () {} | 81 | return this.findById(id, callback) |
98 | PodsDB.remove(callback) | ||
99 | } | 82 | } |
100 | 83 | ||
101 | function removeAllByIds (ids, callback) { | 84 | function loadByUrl (url, callback) { |
102 | if (!callback) callback = function () {} | 85 | return this.findOne({ url: url }, callback) |
103 | PodsDB.remove({ _id: { $in: ids } }, callback) | ||
104 | } | 86 | } |
105 | 87 | ||
106 | // --------------------------------------------------------------------------- | 88 | function removeAll (callback) { |
107 | 89 | return this.remove({}, callback) | |
108 | module.exports = Pods | 90 | } |
diff --git a/server/models/request.js b/server/models/request.js index 2a407388a..db6ad5409 100644 --- a/server/models/request.js +++ b/server/models/request.js | |||
@@ -6,9 +6,9 @@ const mongoose = require('mongoose') | |||
6 | 6 | ||
7 | const constants = require('../initializers/constants') | 7 | const constants = require('../initializers/constants') |
8 | const logger = require('../helpers/logger') | 8 | const logger = require('../helpers/logger') |
9 | const Pods = require('../models/pods') | ||
10 | const requests = require('../helpers/requests') | 9 | const requests = require('../helpers/requests') |
11 | 10 | ||
11 | const Pod = mongoose.model('Pod') | ||
12 | const Video = mongoose.model('Video') | 12 | const Video = mongoose.model('Video') |
13 | 13 | ||
14 | let timer = null | 14 | let timer = null |
@@ -31,7 +31,7 @@ RequestSchema.pre('save', function (next) { | |||
31 | const self = this | 31 | const self = this |
32 | 32 | ||
33 | if (self.to.length === 0) { | 33 | if (self.to.length === 0) { |
34 | Pods.listAllIds(function (err, podIds) { | 34 | Pod.listAllIds(function (err, podIds) { |
35 | if (err) return next(err) | 35 | if (err) return next(err) |
36 | 36 | ||
37 | // No friends | 37 | // No friends |
@@ -140,7 +140,7 @@ function makeRequests () { | |||
140 | const requestToMake = requestsToMake[toPodId] | 140 | const requestToMake = requestsToMake[toPodId] |
141 | 141 | ||
142 | // FIXME: mongodb request inside a loop :/ | 142 | // FIXME: mongodb request inside a loop :/ |
143 | Pods.findById(toPodId, function (err, toPod) { | 143 | Pod.load(toPodId, function (err, toPod) { |
144 | if (err) { | 144 | if (err) { |
145 | logger.error('Error finding pod by id.', { err: err }) | 145 | logger.error('Error finding pod by id.', { err: err }) |
146 | return callbackEach() | 146 | return callbackEach() |
@@ -185,7 +185,7 @@ function makeRequests () { | |||
185 | function removeBadPods () { | 185 | function removeBadPods () { |
186 | async.waterfall([ | 186 | async.waterfall([ |
187 | function findBadPods (callback) { | 187 | function findBadPods (callback) { |
188 | Pods.findBadPods(function (err, pods) { | 188 | Pod.listBadPods(function (err, pods) { |
189 | if (err) { | 189 | if (err) { |
190 | logger.error('Cannot find bad pods.', { error: err }) | 190 | logger.error('Cannot find bad pods.', { error: err }) |
191 | return callback(err) | 191 | return callback(err) |
@@ -199,21 +199,23 @@ function removeBadPods () { | |||
199 | if (pods.length === 0) return callback(null) | 199 | if (pods.length === 0) return callback(null) |
200 | 200 | ||
201 | const urls = map(pods, 'url') | 201 | const urls = map(pods, 'url') |
202 | const ids = map(pods, '_id') | ||
203 | 202 | ||
204 | Video.listByUrls(urls, function (err, videosList) { | 203 | Video.listByUrls(urls, function (err, videosList) { |
205 | if (err) { | 204 | if (err) { |
206 | logger.error('Cannot list videos urls.', { error: err, urls: urls }) | 205 | logger.error('Cannot list videos urls.', { error: err, urls: urls }) |
207 | return callback(null, ids, []) | 206 | return callback(null, pods, []) |
208 | } | 207 | } |
209 | 208 | ||
210 | return callback(null, ids, videosList) | 209 | return callback(null, pods, videosList) |
211 | }) | 210 | }) |
212 | }, | 211 | }, |
213 | 212 | ||
214 | function removeVideosOfTheseBadPods (podIds, videosList, callback) { | 213 | function removeVideosOfTheseBadPods (pods, videosList, callback) { |
215 | // We don't have to remove pods, skip | 214 | // We don't have to remove pods, skip |
216 | if (typeof podIds === 'function') return podIds(null) | 215 | if (typeof pods === 'function') { |
216 | callback = pods | ||
217 | return callback(null) | ||
218 | } | ||
217 | 219 | ||
218 | async.each(videosList, function (video, callbackEach) { | 220 | async.each(videosList, function (video, callbackEach) { |
219 | video.remove(callbackEach) | 221 | video.remove(callbackEach) |
@@ -224,22 +226,30 @@ function removeBadPods () { | |||
224 | return | 226 | return |
225 | } | 227 | } |
226 | 228 | ||
227 | return callback(null, podIds) | 229 | return callback(null, pods) |
228 | }) | 230 | }) |
229 | }, | 231 | }, |
230 | 232 | ||
231 | function removeBadPodsFromDB (podIds, callback) { | 233 | function removeBadPodsFromDB (pods, callback) { |
232 | // We don't have to remove pods, skip | 234 | // We don't have to remove pods, skip |
233 | if (typeof podIds === 'function') return podIds(null) | 235 | if (typeof pods === 'function') { |
236 | callback = pods | ||
237 | return callback(null) | ||
238 | } | ||
239 | |||
240 | async.each(pods, function (pod, callbackEach) { | ||
241 | pod.remove(callbackEach) | ||
242 | }, function (err) { | ||
243 | if (err) return callback(err) | ||
234 | 244 | ||
235 | Pods.removeAllByIds(podIds, callback) | 245 | return callback(null, pods.length) |
246 | }) | ||
236 | } | 247 | } |
237 | ], function (err, removeResult) { | 248 | ], function (err, numberOfPodsRemoved) { |
238 | if (err) { | 249 | if (err) { |
239 | logger.error('Cannot remove bad pods.', { error: err }) | 250 | logger.error('Cannot remove bad pods.', { error: err }) |
240 | } else if (removeResult) { | 251 | } else if (numberOfPodsRemoved) { |
241 | const podsRemoved = removeResult.result.n | 252 | logger.info('Removed %d pods.', numberOfPodsRemoved) |
242 | logger.info('Removed %d pods.', podsRemoved) | ||
243 | } else { | 253 | } else { |
244 | logger.info('No need to remove bad pods.') | 254 | logger.info('No need to remove bad pods.') |
245 | } | 255 | } |
@@ -249,11 +259,11 @@ function removeBadPods () { | |||
249 | function updatePodsScore (goodPods, badPods) { | 259 | function updatePodsScore (goodPods, badPods) { |
250 | logger.info('Updating %d good pods and %d bad pods scores.', goodPods.length, badPods.length) | 260 | logger.info('Updating %d good pods and %d bad pods scores.', goodPods.length, badPods.length) |
251 | 261 | ||
252 | Pods.incrementScores(goodPods, constants.PODS_SCORE.BONUS, function (err) { | 262 | Pod.incrementScores(goodPods, constants.PODS_SCORE.BONUS, function (err) { |
253 | if (err) logger.error('Cannot increment scores of good pods.') | 263 | if (err) logger.error('Cannot increment scores of good pods.') |
254 | }) | 264 | }) |
255 | 265 | ||
256 | Pods.incrementScores(badPods, constants.PODS_SCORE.MALUS, function (err) { | 266 | Pod.incrementScores(badPods, constants.PODS_SCORE.MALUS, function (err) { |
257 | if (err) logger.error('Cannot decrement scores of bad pods.') | 267 | if (err) logger.error('Cannot decrement scores of bad pods.') |
258 | removeBadPods() | 268 | removeBadPods() |
259 | }) | 269 | }) |