diff --git a/lib/jam_ruby/models/band.rb b/lib/jam_ruby/models/band.rb index 87b1afc66..034ee4317 100644 --- a/lib/jam_ruby/models/band.rb +++ b/lib/jam_ruby/models/band.rb @@ -19,11 +19,11 @@ module JamRuby has_many :recordings, :through => :band_recordings, :class_name => "JamRuby::Recording", :foreign_key => "recording_id" # likers - has_many :likers, :class_name => "JamRuby::BandLiker", :foreign_key => "band_id" + has_many :likers, :class_name => "JamRuby::BandLiker", :foreign_key => "band_id", :inverse_of => :band has_many :inverse_likers, :through => :likers, :class_name => "JamRuby::User", :foreign_key => "liker_id" # followers - has_many :followers, :class_name => "JamRuby::BandFollower", :foreign_key => "band_id" + has_many :followers, :class_name => "JamRuby::BandFollower", :foreign_key => "band_id", :inverse_of => :band has_many :inverse_followers, :through => :followers, :class_name => "JamRuby::User", :foreign_key => "follower_id" # invitations diff --git a/lib/jam_ruby/models/band_follower.rb b/lib/jam_ruby/models/band_follower.rb index ba2e43845..8c8ef6654 100644 --- a/lib/jam_ruby/models/band_follower.rb +++ b/lib/jam_ruby/models/band_follower.rb @@ -5,7 +5,7 @@ module JamRuby self.primary_key = 'id' - belongs_to :band, :class_name => "JamRuby::Band", :foreign_key => "band_id" - belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "follower_id", :inverse_of => :inverse_followers + belongs_to :band, :class_name => "JamRuby::Band", :foreign_key => "band_id", :inverse_of => :followers + belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "follower_id", :inverse_of => :band_followings end end \ No newline at end of file diff --git a/lib/jam_ruby/models/band_liker.rb b/lib/jam_ruby/models/band_liker.rb index ac23aa4b3..5926d8b6c 100644 --- a/lib/jam_ruby/models/band_liker.rb +++ b/lib/jam_ruby/models/band_liker.rb @@ -5,7 +5,7 @@ module JamRuby self.primary_key = 'id' - belongs_to :band, :class_name => "JamRuby::Band", :foreign_key => "band_id", :inverse_of => :inverse_band_likers - belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "liker_id", :inverse_of => :band_likers + belongs_to :band, :class_name => "JamRuby::Band", :foreign_key => "band_id", :inverse_of => :likers + belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "liker_id", :inverse_of => :band_likes end end \ No newline at end of file diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index fbdddad34..191b3cdae 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -28,30 +28,30 @@ module JamRuby has_many :musician_recordings, :class_name => "JamRuby::MusicianRecording", :foreign_key => "user_id" has_many :recordings, :through => :musician_recordings, :class_name => "JamRuby::Recording" - # followers - has_many :followers, :class_name => "JamRuby::UserFollower", :foreign_key => "user_id" - has_many :inverse_followers, :through => :followers, :class_name => "JamRuby::User", :foreign_key => "follower_id" - # user likers (a musician has likers and may have likes too; fans do not have likers) - has_many :likers, :class_name => "JamRuby::UserLiker", :foreign_key => "user_id" + has_many :likers, :class_name => "JamRuby::UserLiker", :foreign_key => "user_id", :inverse_of => :user has_many :inverse_likers, :through => :likers, :class_name => "JamRuby::User", :foreign_key => "liker_id" - # user followings - has_many :followings, :class_name => "JamRuby::UserFollowing", :foreign_key => "follower_id" - has_many :inverse_followings, :through => :followings, :class_name => "JamRuby::User", :foreign_key => "user_id" - # user likes (fans and musicians have likes) - has_many :likes, :class_name => "JamRuby::UserLike", :foreign_key => "liker_id" + has_many :likes, :class_name => "JamRuby::UserLike", :foreign_key => "liker_id", :inverse_of => :user has_many :inverse_likes, :through => :followings, :class_name => "JamRuby::User", :foreign_key => "user_id" - # band followings - has_many :band_followings, :class_name => "JamRuby::BandFollower", :foreign_key => "follower_id" - has_many :inverse_band_followings, :through => :band_followings, :class_name => "JamRuby::Band", :foreign_key => "band_id" - # band likes - has_many :band_likes, :class_name => "JamRuby::BandLike", :foreign_key => "liker_id" + has_many :band_likes, :class_name => "JamRuby::BandLiker", :foreign_key => "liker_id", :inverse_of => :user has_many :inverse_band_likes, :through => :band_likes, :class_name => "JamRuby::Band", :foreign_key => "band_id" + # followers + has_many :followers, :class_name => "JamRuby::UserFollower", :foreign_key => "user_id", :inverse_of => :user + has_many :inverse_followers, :through => :followers, :class_name => "JamRuby::User", :foreign_key => "follower_id" + + # user followings + has_many :followings, :class_name => "JamRuby::UserFollowing", :foreign_key => "follower_id", :inverse_of => :user + has_many :inverse_followings, :through => :followings, :class_name => "JamRuby::User", :foreign_key => "user_id" + + # band followings + has_many :band_followings, :class_name => "JamRuby::BandFollower", :foreign_key => "follower_id", :inverse_of => :user + has_many :inverse_band_followings, :through => :band_followings, :class_name => "JamRuby::Band", :foreign_key => "band_id" + # favorites has_many :favorites, :class_name => "JamRuby::UserFavorite", :foreign_key => "user_id" has_many :inverse_favorites, :through => :favorites, :class_name => "JamRuby::User" @@ -283,6 +283,33 @@ module JamRuby return user end + def self.create_user_like(user_id, liker_id) + liker = UserLiker.new() + liker.user_id = user_id + liker.liker_id = liker_id + liker.save + end + + def self.delete_like(user_id, band_id, liker_id) + if !user_id.nil? + JamRuby::UserLiker.delete_all "(user_id = '#{user_id}' AND liker_id = '#{liker_id}')" + + elsif !band_id.nil? + JamRuby::BandLiker.delete_all "(band_id = '#{band_id}' AND liker_id = '#{liker_id}')" + end + end + + def self.create_band_like(band_id, liker_id) + liker = BandLiker.new() + liker.band_id = band_id + liker.liker_id = liker_id + liker.save + end + + def self.delete_band_like(band_id, liker_id) + JamRuby::BandLiker.delete_all "(band_id = '#{band_id}' AND liker_id = '#{liker_id}')" + end + def self.create_user_following(user_id, follower_id) follower = UserFollower.new() follower.user_id = user_id