diff --git a/db/up/music_session_constraints.sql b/db/up/music_session_constraints.sql index f070bc571..1c344acdd 100644 --- a/db/up/music_session_constraints.sql +++ b/db/up/music_session_constraints.sql @@ -1,9 +1,9 @@ -alter table music_sessions_comments drop constraint music_sessions_comments_music_session_id_fkey; +-- alter table music_sessions_comments drop constraint music_sessions_comments_music_session_id_fkey; alter table music_sessions_comments add constraint ms_comments_ms_history_fkey foreign key (music_session_id) references music_sessions_history(music_session_id) match simple ON UPDATE NO ACTION ON DELETE CASCADE; -alter table music_sessions_likers drop constraint music_sessions_likers_music_session_id_fkey; +-- alter table music_sessions_likers drop constraint music_sessions_likers_music_session_id_fkey; alter table music_sessions_likers add constraint ms_likers_ms_history_fkey foreign key (music_session_id) references music_sessions_history(music_session_id) match simple ON UPDATE NO ACTION ON DELETE CASCADE; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index b5dac67a6..c773c1b5b 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -579,7 +579,7 @@ module JamRuby Follow.delete_all "(user_id = '#{followerId}' AND followable_id = '#{targetEntityId}')" end - def create_user_like(targetUserId) + def create_user_liking(targetUserId) targetUser = User.find(targetUserId) like = Like.new @@ -588,7 +588,7 @@ module JamRuby like.save end - def create_band_like(targetBandId) + def create_band_liking(targetBandId) targetBand = Band.find(targetBandId) like = Like.new @@ -597,28 +597,28 @@ module JamRuby like.save end - def create_session_like(targetSessionId) - targetSession = MusicSessionHistory.find(targetSessionId) - - like = Like.new - like.likable = targetSession - like.user = self - like.save - end - - def create_recording_like(targetRecordingId) - targetRecording = Recording.find(targetRecordingId) - - like = Like.new - like.likable = targetRecording - like.user = self - like.save - end - - def self.delete_like(likerId, targetEntityId) + def self.delete_liking(likerId, targetEntityId) Like.delete_all "(user_id = '#{liker_id}' AND likable_id = '#{targetEntityId}')" end + # def create_session_like(targetSessionId) + # targetSession = MusicSessionHistory.find(targetSessionId) + + # like = Like.new + # like.likable = targetSession + # like.user = self + # like.save + # end + + # def create_recording_like(targetRecordingId) + # targetRecording = Recording.find(targetRecordingId) + + # like = Like.new + # like.likable = targetRecording + # like.user = self + # like.save + # end + def self.finalize_update_email(update_email_token) # updates the user model to have a new email address user = User.find_by_update_email_token!(update_email_token) diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js index 762837179..f80c0f037 100644 --- a/web/app/assets/javascripts/jam_rest.js +++ b/web/app/assets/javascripts/jam_rest.js @@ -424,14 +424,22 @@ type: "POST", dataType: "json", contentType: 'application/json', - url: "/api/users/" + id + "/likes", + url: "/api/users/" + id + "/likings", data: JSON.stringify(options), processData: false }); } function removeLike(options) { - + var id = getId(options); + return $.ajax({ + type: "DELETE", + dataType: "json", + contentType: 'application/json', + url: "/api/users/" + id + "/likings", + data: JSON.stringify(options), + processData: false + }); } function addFollowing(options) { diff --git a/web/app/controllers/api_users_controller.rb b/web/app/controllers/api_users_controller.rb index 491110426..8a8b27682 100644 --- a/web/app/controllers/api_users_controller.rb +++ b/web/app/controllers/api_users_controller.rb @@ -185,23 +185,23 @@ class ApiUsersController < ApiController end ###################### LIKES ######################### - def like_index + def liking_index @user = User.find(params[:id]) end - def like_create + def liking_create if !params[:user_id].nil? - @user.create_user_like(params[:user_id]) + @user.create_user_liking(params[:user_id]) elsif !params[:band_id].nil? - @user.create_band_like(params[:band_id]) + @user.create_band_liking(params[:band_id]) end - respond_with @user, responder: ApiResponder, :location => api_user_like_index_url(@user) + respond_with @user, responder: ApiResponder, :location => api_user_liking_index_url(@user) end - def like_destroy - User.delete_like(params[:id], params[:target_entity_id]) + def liking_destroy + User.delete_liking(params[:id], params[:target_entity_id]) respond_with responder: ApiResponder, :status => 204 end diff --git a/web/app/views/api_users/liker_index.rabl b/web/app/views/api_users/liker_index.rabl index cbdf608bc..112c69e70 100644 --- a/web/app/views/api_users/liker_index.rabl +++ b/web/app/views/api_users/liker_index.rabl @@ -1,25 +1,13 @@ object @user.likers -attributes :liker_id => :user_id +attributes :user_id -node :first_name do |liker| - liker.user.first_name +node :name do |liker| + liker.user.name end -node :last_name do |liker| - liker.user.last_name -end - -node :city do |liker| - liker.user.city -end - -node :state do |liker| - liker.user.state -end - -node :country do |liker| - liker.user.country +node :location do |liker| + liker.user.location end node :musician do |liker| diff --git a/web/app/views/api_users/like_create.rabl b/web/app/views/api_users/liking_create.rabl similarity index 100% rename from web/app/views/api_users/like_create.rabl rename to web/app/views/api_users/liking_create.rabl diff --git a/web/app/views/api_users/like_index.rabl b/web/app/views/api_users/liking_index.rabl similarity index 100% rename from web/app/views/api_users/like_index.rabl rename to web/app/views/api_users/liking_index.rabl diff --git a/web/config/routes.rb b/web/config/routes.rb index 83173495a..2f16ee996 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -161,9 +161,9 @@ SampleApp::Application.routes.draw do match '/users/:id/likers' => 'api_users#liker_index', :via => :get # user likes - match '/users/:id/likes' => 'api_users#like_index', :via => :get, :as => 'api_user_like_index' - match '/users/:id/likes' => 'api_users#like_create', :via => :post - match '/users/:id/likes' => 'api_users#like_destroy', :via => :delete + match '/users/:id/likings' => 'api_users#liking_index', :via => :get, :as => 'api_user_liking_index' + match '/users/:id/likings' => 'api_users#liking_create', :via => :post + match '/users/:id/likings' => 'api_users#liking_destroy', :via => :delete # user followers match '/users/:id/followers' => 'api_users#follower_index', :via => :get, :as => 'api_user_follower_index' diff --git a/web/spec/requests/users_api_spec.rb b/web/spec/requests/users_api_spec.rb index 2420b09da..41bf802f8 100644 --- a/web/spec/requests/users_api_spec.rb +++ b/web/spec/requests/users_api_spec.rb @@ -36,15 +36,15 @@ describe "User API", :type => :api do end ########################## LIKES / LIKERS ######################### - def create_user_like(authenticated_user, source_user, target_user) + def create_user_liking(authenticated_user, source_user, target_user) login(authenticated_user.email, authenticated_user.password, 200, true) - post "/api/users/#{source_user.id}/likes.json", { :user_id => target_user.id }.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/users/#{source_user.id}/likings.json", { :user_id => target_user.id }.to_json, "CONTENT_TYPE" => 'application/json' return last_response end def get_user_likes(authenticated_user, source_user) login(authenticated_user.email, authenticated_user.password, 200, true) - get "/api/users/#{source_user.id}/likes.json" + get "/api/users/#{source_user.id}/likings.json" return last_response end @@ -56,19 +56,19 @@ describe "User API", :type => :api do def delete_user_like(authenticated_user, source_user, target_user) login(authenticated_user.email, authenticated_user.password, 200, true) - delete "/api/users/#{source_user.id}/likes.json", { :target_entity_id => target_user.id }.to_json, "CONTENT_TYPE" => 'application/json' + delete "/api/users/#{source_user.id}/likings.json", { :target_entity_id => target_user.id }.to_json, "CONTENT_TYPE" => 'application/json' return last_response end def create_band_like(authenticated_user, source_user, target_band) login(authenticated_user.email, authenticated_user.password, 200, true) - post "/api/users/#{source_user.id}/likes.json", { :band_id => target_band.id }.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/users/#{source_user.id}/likings.json", { :band_id => target_band.id }.to_json, "CONTENT_TYPE" => 'application/json' return last_response end def get_band_likes(authenticated_user, source_user) login(authenticated_user.email, authenticated_user.password, 200, true) - get "/api/users/#{source_user.id}/likes.json" + get "/api/users/#{source_user.id}/likings.json" return last_response end @@ -311,7 +311,7 @@ describe "User API", :type => :api do ###################### LIKERS / LIKES ######################## it "should allow user to like user" do # create user like - last_response = create_user_like(user, user, fan) + last_response = create_user_liking(user, user, fan) last_response.status.should == 201 # get likes @@ -351,12 +351,12 @@ describe "User API", :type => :api do it "should not allow user to create like for another user" do dummy_user = FactoryGirl.create(:user) - last_response = create_user_like(user, dummy_user, fan) + last_response = create_user_liking(user, dummy_user, fan) last_response.status.should == 403 end it "should allow user to delete like" do - last_response = create_user_like(user, user, fan) + last_response = create_user_liking(user, user, fan) last_response.status.should == 201 # get likes @@ -379,7 +379,7 @@ describe "User API", :type => :api do it "should not allow user to delete like of another user" do # create user like - last_response = create_user_like(user, user, fan) + last_response = create_user_liking(user, user, fan) last_response.status.should == 201 # get likes