From 4712081f2a5f48749cf125d729e78b926ab28d6d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 29 Dec 2016 10:33:36 +0100 Subject: [PATCH] Server: add association between author and user --- server/controllers/api/remote.js | 6 ++++-- server/controllers/api/videos.js | 17 ++++++++++------- server/initializers/checker.js | 4 ++-- server/models/author.js | 11 +++++++++++ server/models/oauth-client.js | 6 +++--- server/models/user.js | 5 +++++ 6 files changed, 35 insertions(+), 14 deletions(-) diff --git a/server/controllers/api/remote.js b/server/controllers/api/remote.js index 2cf916ff3..94d6e740e 100644 --- a/server/controllers/api/remote.js +++ b/server/controllers/api/remote.js @@ -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 } diff --git a/server/controllers/api/videos.js b/server/controllers/api/videos.js index 992f03db0..170224634 100644 --- a/server/controllers/api/videos.js +++ b/server/controllers/api/videos.js @@ -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) }) }, diff --git a/server/initializers/checker.js b/server/initializers/checker.js index 2753604dc..6471bb4f1 100644 --- a/server/initializers/checker.js +++ b/server/initializers/checker.js @@ -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) }) } diff --git a/server/models/author.js b/server/models/author.js index 8f5b598c8..5835ada99 100644 --- a/server/models/author.js +++ b/server/models/author.js @@ -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' + }) } diff --git a/server/models/oauth-client.js b/server/models/oauth-client.js index 758c4cf2f..021a34007 100644 --- a/server/models/oauth-client.js +++ b/server/models/oauth-client.js @@ -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) { diff --git a/server/models/user.js b/server/models/user.js index 631cd96c9..36ed723cc 100644 --- a/server/models/user.js +++ b/server/models/user.js @@ -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' -- 2.41.0