From 4c2e5e0a6dda800ad0c7b298e0a59ccf65e7e68d Mon Sep 17 00:00:00 2001 From: Brandon Fitch Date: Mon, 28 Nov 2016 17:47:14 -0500 Subject: [PATCH 1/2] partial commit --- app/models/collaborator.rb | 11 ++++++----- app/models/game.rb | 16 +++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/models/collaborator.rb b/app/models/collaborator.rb index 9085df7..50b07eb 100644 --- a/app/models/collaborator.rb +++ b/app/models/collaborator.rb @@ -79,11 +79,12 @@ def self.return_user_collaborations(games, users) def self.find_collaborators_by_game(var, ids) collaborators = [] - ids.each do |id| - var = Collaborator.where('game_id = ? AND requested = ? AND accepted = ?', id, true, true) - collaborators.concat(var) - end - collaborators + var = ActiveRecord::Base.connection.execute("SELECT * FROM collaborators WHERE game_id CONTAINS #{ids.values} AND requested = true AND accepted = true") + # ids.values.each do |id| + # var = Collaborator.where('game_id = ? AND requested = ? AND accepted = ?', id, true, true) + collaborators = collaborators.concat(var) + # end + # collaborators end def self.find_requesters_by_game(var, ids) diff --git a/app/models/game.rb b/app/models/game.rb index e3d15d1..33f718a 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -44,13 +44,15 @@ def self.update_game(var, params) end def self.find_game_ids_by_creator(var, auth_id) - var = Game.where(user_id: auth_id) - ids = [] - var.each do |game| - ids << game.id - end - ids.shift if ids.include? 0 - ids + ids = ActiveRecord::Base.connection.execute("SELECT games.id FROM games WHERE games.user_id = #{auth_id}") + # var = Game.where(user_id: auth_id) + # ids = [] + # var.each do |game| + # ids << game.id + # end + # binding.pry + # ids.shift if ids.include? 0 + # ids end def self.find_game_ids(game_ids, auth_id) From 937a565a691db900604149bfe18bc1127a317b15 Mon Sep 17 00:00:00 2001 From: Brandon Fitch Date: Tue, 29 Nov 2016 15:12:35 -0500 Subject: [PATCH 2/2] Collaborator refactor complete and postman tested --- app/controllers/application_controller.rb | 5 +-- app/controllers/collaborators_controller.rb | 21 ++++++------- app/models/collaborator.rb | 21 +++++++------ app/models/game.rb | 12 ++------ app/models/user.rb | 34 ++++++++++++--------- config/schedule.rb | 8 ++--- 6 files changed, 49 insertions(+), 52 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 6399284..9f63fd9 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -2,10 +2,11 @@ class ApplicationController < ActionController::Base before_action :check_auth def check_auth - if request.env['HTTP_USER_ID'].to_i == nil + user_id = request.env['HTTP_USER_ID'].to_i + if user_id == nil render json: "No User ID Detected", status: 401 else - current_user = User.find(request.env['HTTP_USER_ID'].to_i) + current_user = User.find(user_id) if current_user.token == request.env['HTTP_TOKEN'] true else diff --git a/app/controllers/collaborators_controller.rb b/app/controllers/collaborators_controller.rb index ff1b0be..4531fd5 100644 --- a/app/controllers/collaborators_controller.rb +++ b/app/controllers/collaborators_controller.rb @@ -96,29 +96,26 @@ def find_game_collaborators end end - - # select distinct games.name, users.id, collaborators.game_id, users.username, games.description, games.score, games.published, games.created_at, games.updated_at, games.plays - # from games, users, collaborators - # where collaborators.game_id = games.id - # and game_id = 7 <-- this is the game ID. or could be a user_id or whatever. - def find_user_collaborators - ids = Game.find_game_ids_by_creator(@games, request.env['HTTP_USER_ID']) - collaborators = Collaborator.find_collaborators_by_game(@collaborators, ids) + user_id = request.env['HTTP_USER_ID'] + ids = Game.find_game_ids_by_creator(user_id) + collaborators = Collaborator.find_collaborators_by_game(ids, user_id) user_collaborators = User.find_username_for_collaborators(collaborators) render json: user_collaborators end def find_user_requesters - ids = Game.find_game_ids_by_creator(@games, request.env['HTTP_USER_ID']) - requesters = Collaborator.find_requesters_by_game(@requesters, ids) + user_id = request.env['HTTP_USER_ID'] + ids = Game.find_game_ids_by_creator(user_id) + requesters = Collaborator.find_requesters_by_game(ids, user_id) user_requesters = User.find_username_for_requesters(requesters) render json: user_requesters end def find_collaborations_by_user - game_ids = Collaborator.find_collaborations_by_user(request.env['HTTP_USER_ID']) - games = Game.find_game_ids(game_ids, request.env['HTTP_USER_ID']) + user_id = request.env['HTTP_USER_ID'] + game_ids = Collaborator.find_collaborations_by_user(user_id) + games = Game.find_game_ids(game_ids, user_id) users = User.find_username_by_game_creator_id(games) result = Collaborator.return_user_collaborations(games, users) render json: result diff --git a/app/models/collaborator.rb b/app/models/collaborator.rb index 50b07eb..cd247b9 100644 --- a/app/models/collaborator.rb +++ b/app/models/collaborator.rb @@ -77,21 +77,22 @@ def self.return_user_collaborations(games, users) result end - def self.find_collaborators_by_game(var, ids) + def self.find_collaborators_by_game(ids, auth_id) collaborators = [] - var = ActiveRecord::Base.connection.execute("SELECT * FROM collaborators WHERE game_id CONTAINS #{ids.values} AND requested = true AND accepted = true") - # ids.values.each do |id| - # var = Collaborator.where('game_id = ? AND requested = ? AND accepted = ?', id, true, true) - collaborators = collaborators.concat(var) - # end - # collaborators + ids = ids.values.flatten + ids.delete(0) + ids.each do |id| + collaborators << ActiveRecord::Base.connection.execute("SELECT * FROM collaborators WHERE game_id = #{id} AND requested = true AND accepted = true AND user_id != #{auth_id}").values + end + collaborators end - def self.find_requesters_by_game(var, ids) + def self.find_requesters_by_game(ids, auth_id) requesters = [] + ids = ids.values.flatten + ids.delete(0) ids.each do |id| - var = Collaborator.where('game_id = ? AND requested = ? AND accepted = ?', id, true, false) - requesters.concat(var) + requesters << ActiveRecord::Base.connection.execute("SELECT * FROM collaborators WHERE game_id = #{id} AND requested = true AND accepted = false AND user_id != #{auth_id}").values end requesters end diff --git a/app/models/game.rb b/app/models/game.rb index 33f718a..b45030e 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -43,16 +43,8 @@ def self.update_game(var, params) var.thumbnail = params[:thumbnail] end - def self.find_game_ids_by_creator(var, auth_id) - ids = ActiveRecord::Base.connection.execute("SELECT games.id FROM games WHERE games.user_id = #{auth_id}") - # var = Game.where(user_id: auth_id) - # ids = [] - # var.each do |game| - # ids << game.id - # end - # binding.pry - # ids.shift if ids.include? 0 - # ids + def self.find_game_ids_by_creator(auth_id) + ActiveRecord::Base.connection.execute("SELECT games.id FROM games WHERE games.user_id = #{auth_id}") end def self.find_game_ids(game_ids, auth_id) diff --git a/app/models/user.rb b/app/models/user.rb index d750389..149e988 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,15 +25,18 @@ def self.find_username_by_game_creator_id(games) def self.find_username_for_collaborators(collaborators) result = [] - collaborators.each do |t| - username = User.find(t.user_id).username + game_id = collaborators.first[0][1] + game_name = Game.find(game_id).name + collaborators.first.each do |t| + username = User.find(t[0]).username result.push({ - id: t.id, - game_id: t.game_id, - user_id: t.user_id, + id: t[0], + game_id: t[1], + user_id: t[2], + game_name: game_name, username: username, - requested: true, - accepted: true + requested: t[3], + accepted: t[4] }) end result @@ -41,15 +44,18 @@ def self.find_username_for_collaborators(collaborators) def self.find_username_for_requesters(requesters) result = [] - requesters.each do |t| - username = User.find(t.user_id).username + game_id = requesters.first[0][1] + game_name = Game.find(game_id).name + requesters.first.each do |t| + username = User.find(t[0]).username result.push({ - id: t.id, - game_id: t.game_id, - user_id: t.user_id, + id: t[0], + game_id: t[1], + user_id: t[2], + game_name: game_name, username: username, - requested: true, - accepted: false + requested: t[3], + accepted: t[4] }) end result diff --git a/config/schedule.rb b/config/schedule.rb index 84685fb..6005c6a 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -1,8 +1,8 @@ # every 1.day do system 'heroku pg:backups capture' system 'curl -o latest.dump `heroku pg:backups public-url`' - - system 'aws s3 cp s3://yazuapgbackup/latest.dump ../yazua_backup/' if system 'pg_restore --verbose --clean --no-acl --no-owner -h localhost -U Fitchburgh -d forge_test latest.dump' - - system 'aws s3 cp latest.dump s3://yazuapgbackup/' + system 'pg_restore --verbose --clean --no-acl --no-owner -h localhost -U Fitchburgh -d forge_test latest.dump' + # system 'aws s3 cp s3://yazuapgbackup/latest.dump ../yazua_backup/' if system 'pg_restore --verbose --clean --no-acl --no-owner -h localhost -U Fitchburgh -d forge_test latest.dump' + # + # system 'aws s3 cp latest.dump s3://yazuapgbackup/' # end