Server: add association between author and user
authorChocobozzz <florian.bigard@gmail.com>
Thu, 29 Dec 2016 09:33:36 +0000 (10:33 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Thu, 29 Dec 2016 09:56:07 +0000 (10:56 +0100)
server/controllers/api/remote.js
server/controllers/api/videos.js
server/initializers/checker.js
server/models/author.js
server/models/oauth-client.js
server/models/user.js

index 2cf916ff3ac63b968eb843fc9454311a5e42c853..94d6e740e8f221d2285ce3be3d4d695d7d79c743 100644 (file)
@@ -84,11 +84,13 @@ function addRemoteVideo (videoToCreateData, fromHost, finalCallback) {
       const query = {
         where: {
           name: username,
-          podId: pod.id
+          podId: pod.id,
+          userId: null
         },
         defaults: {
           name: username,
-          podId: pod.id
+          podId: pod.id,
+          userId: null
         },
         transaction: t
       }
index 992f03db0c3b864d15b58346314368fec68c2b15..170224634961ccb05efc51bdece5ee11c5510e79 100644 (file)
@@ -95,23 +95,26 @@ function addVideo (req, res, next) {
     },
 
     function findOrCreateAuthor (t, callback) {
-      const username = res.locals.oauth.token.user.username
+      const user = res.locals.oauth.token.User
 
       const query = {
         where: {
-          name: username,
-          podId: null
+          name: user.username,
+          podId: null,
+          userId: user.id
         },
         defaults: {
-          name: username,
-          podId: null // null because it is OUR pod
+          name: user.username,
+          podId: null, // null because it is OUR pod
+          userId: user.id
         },
         transaction: t
       }
 
       db.Author.findOrCreate(query).asCallback(function (err, result) {
-        // [ instance, wasCreated ]
-        return callback(err, t, result[0])
+        const authorInstance = result[0]
+
+        return callback(err, t, authorInstance)
       })
     },
 
index 2753604dc43bb6eb492a177b666cd20a8a2b982c..6471bb4f11fcb940d3833d61743951d777b014bd 100644 (file)
@@ -42,10 +42,10 @@ function checkMissedConfig () {
 }
 
 function clientsExist (callback) {
-  db.OAuthClient.list(function (err, clients) {
+  db.OAuthClient.countTotal(function (err, totalClients) {
     if (err) return callback(err)
 
-    return callback(null, clients.length !== 0)
+    return callback(null, totalClients !== 0)
   })
 }
 
index 8f5b598c8e689b6d471f022076a1dc4b36ee4437..5835ada994a5f7fe984546b3841d6d51c7a32526 100644 (file)
@@ -23,6 +23,9 @@ module.exports = function (sequelize, DataTypes) {
         },
         {
           fields: [ 'podId' ]
+        },
+        {
+          fields: [ 'userId' ]
         }
       ],
       classMethods: {
@@ -44,4 +47,12 @@ function associate (models) {
     },
     onDelete: 'cascade'
   })
+
+  this.belongsTo(models.User, {
+    foreignKey: {
+      name: 'userId',
+      allowNull: true
+    },
+    onDelete: 'cascade'
+  })
 }
index 758c4cf2f63838989f16ca7c7cdf7d57d11e1adc..021a3400752d50e6ab427852b21c294676ac7da8 100644 (file)
@@ -30,8 +30,8 @@ module.exports = function (sequelize, DataTypes) {
         }
       ],
       classMethods: {
+        countTotal,
         getByIdAndSecret,
-        list,
         loadFirstClient
       }
     }
@@ -42,8 +42,8 @@ module.exports = function (sequelize, DataTypes) {
 
 // ---------------------------------------------------------------------------
 
-function list (callback) {
-  return this.findAll().asCallback(callback)
+function countTotal (callback) {
+  return this.count().asCallback(callback)
 }
 
 function loadFirstClient (callback) {
index 631cd96c98cbe014aa65e6ef1ac962e39fc3e12f..36ed723ccd1292423599e7ab069d3ffd4dac1810 100644 (file)
@@ -94,6 +94,11 @@ function toFormatedJSON () {
 // ------------------------------ STATICS ------------------------------
 
 function associate (models) {
+  this.hasOne(models.Author, {
+    foreignKey: 'userId',
+    onDelete: 'cascade'
+  })
+
   this.hasMany(models.OAuthToken, {
     foreignKey: 'userId',
     onDelete: 'cascade'