Server: use video hook to send information to other pods when a video is
authorChocobozzz <florian.bigard@gmail.com>
Thu, 29 Dec 2016 10:17:11 +0000 (11:17 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Thu, 29 Dec 2016 10:17:11 +0000 (11:17 +0100)
deleted

server/controllers/api/pods.js
server/controllers/api/users.js
server/controllers/api/videos.js
server/models/video.js

index 79f3f9d8d7fb2f0c1eee357be4873ddc974ab585..d9279f1d963f24b2afe7ff94411e63cef86d7e93 100644 (file)
@@ -113,7 +113,7 @@ function removePods (req, res, next) {
       db.Pod.loadByHost(host, callback)
     },
 
-    function removePod (pod, callback) {
+    function deletePod (pod, callback) {
       pod.destroy().asCallback(callback)
     }
   ], function (err) {
index 890028b367c33cdaac8f498c61de7c68c1e2cb57..e4423680cfddadff917ae3ea6783b2f6f4c67fc0 100644 (file)
@@ -90,39 +90,11 @@ function listUsers (req, res, next) {
 
 function removeUser (req, res, next) {
   waterfall([
-    function getUser (callback) {
+    function loadUser (callback) {
       db.User.loadById(req.params.id, callback)
     },
 
-    // TODO: use foreignkey?
-    function getVideos (user, callback) {
-      db.Video.listOwnedByAuthor(user.username, function (err, videos) {
-        return callback(err, user, videos)
-      })
-    },
-
-    function removeVideosFromDB (user, videos, callback) {
-      each(videos, function (video, callbackEach) {
-        video.destroy().asCallback(callbackEach)
-      }, function (err) {
-        return callback(err, user, videos)
-      })
-    },
-
-    function sendInformationToFriends (user, videos, callback) {
-      videos.forEach(function (video) {
-        const params = {
-          name: video.name,
-          remoteId: video.id
-        }
-
-        friends.removeVideoToFriends(params)
-      })
-
-      return callback(null, user)
-    },
-
-    function removeUserFromDB (user, callback) {
+    function deleteUser (user, callback) {
       user.destroy().asCallback(callback)
     }
   ], function andFinally (err) {
index 170224634961ccb05efc51bdece5ee11c5510e79..ddf85d77dc2dbc834c0333ddae5e48112871f1d0 100644 (file)
@@ -249,27 +249,15 @@ function removeVideo (req, res, next) {
   const videoId = req.params.id
 
   waterfall([
-    function getVideo (callback) {
-      db.Video.load(videoId, callback)
-    },
-
-    function removeFromDB (video, callback) {
-      video.destroy().asCallback(function (err) {
-        if (err) return callback(err)
-
-        return callback(null, video)
+    function loadVideo (callback) {
+      db.Video.load(videoId, function (err, video) {
+        return callback(err, video)
       })
     },
 
-    function sendInformationToFriends (video, callback) {
-      const params = {
-        name: video.name,
-        remoteId: video.id
-      }
-
-      friends.removeVideoToFriends(params)
-
-      return callback(null)
+    function deleteVideo (video, callback) {
+      // Informations to other pods will be sent by the afterDestroy video hook
+      video.destroy().asCallback(callback)
     }
   ], function andFinally (err) {
     if (err) {
index d1595ce515ddad8fe2c7c8e0ab5d79ba7d91b4a6..564e362fdd244fbf85a3d7b2dbb6a1b2d3ee3817 100644 (file)
@@ -12,6 +12,7 @@ const values = require('lodash/values')
 
 const constants = require('../initializers/constants')
 const logger = require('../helpers/logger')
+const friends = require('../lib/friends')
 const modelUtils = require('./utils')
 const customVideosValidators = require('../helpers/custom-validators').videos
 
@@ -205,11 +206,24 @@ function afterDestroy (video, options, next) {
       function (callback) {
         removeFile(video, callback)
       },
+
       function (callback) {
         removeTorrent(video, callback)
       },
+
       function (callback) {
         removePreview(video, callback)
+      },
+
+      function (callback) {
+        const params = {
+          name: video.name,
+          remoteId: video.id
+        }
+
+        friends.removeVideoToFriends(params)
+
+        return callback()
       }
     )
   }