From 229ab95d3455526302f53f817e97daf463f6b533 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sat, 27 Oct 2012 22:35:28 -0400 Subject: [PATCH 1/7] updates for musicians --- lib/jam_ruby.rb | 2 +- lib/jam_ruby/models/band.rb | 5 +++-- lib/jam_ruby/models/friend_request.rb | 4 ++++ lib/jam_ruby/models/genre.rb | 4 ++-- lib/jam_ruby/models/instrument.rb | 10 ++++++++++ lib/jam_ruby/models/user.rb | 1 + 6 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 lib/jam_ruby/models/instrument.rb diff --git a/lib/jam_ruby.rb b/lib/jam_ruby.rb index e13da46a6..71428d3c2 100644 --- a/lib/jam_ruby.rb +++ b/lib/jam_ruby.rb @@ -12,13 +12,13 @@ require "jam_ruby/version" require "jam_ruby/message_factory" require "jam_ruby/models/genre" require "jam_ruby/models/user" -require "jam_ruby/models/musician" require "jam_ruby/models/band" require "jam_ruby/models/connection" require "jam_ruby/models/friendship" require "jam_ruby/models/music_session" require "jam_ruby/models/invitation" require "jam_ruby/models/friend_request" +require "jam_ruby/models/instrument" include Jampb diff --git a/lib/jam_ruby/models/band.rb b/lib/jam_ruby/models/band.rb index fda27e818..4ea0bb19e 100644 --- a/lib/jam_ruby/models/band.rb +++ b/lib/jam_ruby/models/band.rb @@ -1,9 +1,10 @@ module JamRuby class Band < ActiveRecord::Base - self.primary_key = 'id' + self.primary_key = 'id' - has_and_belongs_to_many :musicians, :class_name => "JamRuby::Musician" + has_and_belongs_to_many :users, :class_name => "JamRuby::User" + has_many :genres, :class_name => "JamRuby::Genre" end end \ No newline at end of file diff --git a/lib/jam_ruby/models/friend_request.rb b/lib/jam_ruby/models/friend_request.rb index c9dd377f5..6767aa685 100644 --- a/lib/jam_ruby/models/friend_request.rb +++ b/lib/jam_ruby/models/friend_request.rb @@ -9,5 +9,9 @@ module JamRuby validates :user_id, :presence => true validates :friend_id, :presence => true + def to_s + return "#{self.user.to_s}:#{self.friend.to_s}" + end + end end \ No newline at end of file diff --git a/lib/jam_ruby/models/genre.rb b/lib/jam_ruby/models/genre.rb index c70b0e251..fb3d692a0 100644 --- a/lib/jam_ruby/models/genre.rb +++ b/lib/jam_ruby/models/genre.rb @@ -1,9 +1,9 @@ module JamRuby class Genre < ActiveRecord::Base - self.primary_key = 'id' + self.primary_key = 'id' - has_and_belongs_to_many :musicians, :class_name => "JamRuby::Musician" + has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" has_and_belongs_to_many :music_sessions, :class_name => "JamRuby::MusicSession", :join_table => "genres_music_sessions" end diff --git a/lib/jam_ruby/models/instrument.rb b/lib/jam_ruby/models/instrument.rb new file mode 100644 index 000000000..3c3214334 --- /dev/null +++ b/lib/jam_ruby/models/instrument.rb @@ -0,0 +1,10 @@ +module JamRuby + class Instrument < ActiveRecord::Base + + self.primary_key = 'id' + + has_and_belongs_to_many :users, :class_name => "JamRuby::User" + has_and_belongs_to_many :music_sessions, :class_name => "JamRuby::MusicSession", :join_table => "genres_music_sessions" + + 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 ae4e448a4..96080ccb5 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -12,6 +12,7 @@ module JamRuby has_many :connections, :class_name => "JamRuby::Connection" has_many :friend_requests, :class_name => "JamRuby::FriendRequest" + has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" has_many :friendships, :class_name => "JamRuby::Friendship", :foreign_key => "user_id" has_many :friends, :through => :friendships, :class_name => "JamRuby::User" From 96fbb23c34cccdb207e74d52f641ffb1ab3d2964 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Sat, 27 Oct 2012 22:38:25 -0400 Subject: [PATCH 2/7] removed musician model --- lib/jam_ruby/models/musician.rb | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 lib/jam_ruby/models/musician.rb diff --git a/lib/jam_ruby/models/musician.rb b/lib/jam_ruby/models/musician.rb deleted file mode 100644 index bf3dbdbb5..000000000 --- a/lib/jam_ruby/models/musician.rb +++ /dev/null @@ -1,9 +0,0 @@ -module JamRuby - class Musician < JamRuby::User - - self.primary_key = 'id' - - has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" - - end -end \ No newline at end of file From 74e03cd89797fd86b75d34502cb1538da96b9ac2 Mon Sep 17 00:00:00 2001 From: tihot_jk Date: Sun, 28 Oct 2012 17:29:07 -0700 Subject: [PATCH 3/7] Add session_id to the notification massage for join/leave session. --- lib/jam_ruby/message_factory.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jam_ruby/message_factory.rb b/lib/jam_ruby/message_factory.rb index 85838c19e..f7a9eb19a 100644 --- a/lib/jam_ruby/message_factory.rb +++ b/lib/jam_ruby/message_factory.rb @@ -85,8 +85,8 @@ end # create a user-joined session message - def user_joined_music_session(user_id, username) - joined = Jampb::UserJoinedMusicSession.new(:user_id => user_id, :username => username) + def user_joined_music_session(session_id, user_id, username) + joined = Jampb::UserJoinedMusicSession.new(:session_id => session_id, :user_id => user_id, :username => username) return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_MUSIC_SESSION, :route_to => CLIENT_TARGET, :user_joined_music_session => joined) end From 662fcf01121c29f84334a55bf871600dd8a85d10 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Mon, 29 Oct 2012 06:45:47 -0400 Subject: [PATCH 4/7] initial musician / band dev --- lib/jam_ruby.rb | 1 + lib/jam_ruby/models/band.rb | 12 ++++++++ lib/jam_ruby/models/instrument.rb | 6 +++- lib/jam_ruby/models/user.rb | 39 +++++++++++++++++++++++--- lib/jam_ruby/models/user_instrument.rb | 10 +++++++ 5 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 lib/jam_ruby/models/user_instrument.rb diff --git a/lib/jam_ruby.rb b/lib/jam_ruby.rb index 71428d3c2..8887749ea 100644 --- a/lib/jam_ruby.rb +++ b/lib/jam_ruby.rb @@ -19,6 +19,7 @@ require "jam_ruby/models/music_session" require "jam_ruby/models/invitation" require "jam_ruby/models/friend_request" require "jam_ruby/models/instrument" +require "jam_ruby/models/user_instrument" include Jampb diff --git a/lib/jam_ruby/models/band.rb b/lib/jam_ruby/models/band.rb index 4ea0bb19e..663a2a40d 100644 --- a/lib/jam_ruby/models/band.rb +++ b/lib/jam_ruby/models/band.rb @@ -1,10 +1,22 @@ module JamRuby class Band < ActiveRecord::Base + attr_accessor :photo_url, :logo_url + self.primary_key = 'id' has_and_belongs_to_many :users, :class_name => "JamRuby::User" has_many :genres, :class_name => "JamRuby::Genre" + def photo_url + # TODO: move image path to config + @photo_url = "http://www.jamkazam.com/images/bands/photos/#{self.id}.gif"; + end + + def logo_url + # TODO: move image path to config + @logo_url = "http://www.jamkazam.com/images/bands/logos/#{self.id}.gif"; + end + end end \ No newline at end of file diff --git a/lib/jam_ruby/models/instrument.rb b/lib/jam_ruby/models/instrument.rb index 3c3214334..db3019be9 100644 --- a/lib/jam_ruby/models/instrument.rb +++ b/lib/jam_ruby/models/instrument.rb @@ -3,7 +3,11 @@ module JamRuby self.primary_key = 'id' - has_and_belongs_to_many :users, :class_name => "JamRuby::User" + # users + has_many :user_instruments + has_many :users, :through => :user_instruments, :class_name => "JamRuby::User" + + # music sessions has_and_belongs_to_many :music_sessions, :class_name => "JamRuby::MusicSession", :join_table => "genres_music_sessions" end diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index 96080ccb5..6ca9df5c6 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -2,27 +2,35 @@ module JamRuby class User < ActiveRecord::Base attr_accessible :name, :email, :password, :password_confirmation - attr_accessor :updating_password, :online + attr_accessor :updating_password, :online, :photo_url self.primary_key = 'id' - - # re-visit later (used for multiple table inheritance w/ Musician model) - # belongs_to :biz, :polymorphic => true + # connections (websocket-gateway) has_many :connections, :class_name => "JamRuby::Connection" + # friend requests has_many :friend_requests, :class_name => "JamRuby::FriendRequest" + + # instruments + has_many :user_instruments + has_many :instruments, :through => :user_instruments, :class_name => "JamRuby::Instrument" + + # bands has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" + # friends has_many :friendships, :class_name => "JamRuby::Friendship", :foreign_key => "user_id" has_many :friends, :through => :friendships, :class_name => "JamRuby::User" has_many :inverse_friendships, :class_name => "JamRuby::Friendship", :foreign_key => "friend_id" has_many :inverse_friends, :through => :inverse_friendships, :source => :user, :class_name => "JamRuby::User" + # music sessions has_many :music_session_clients, :class_name => "JamRuby::MusicSessionClient" has_many :created_music_sessions, :foreign_key => "user_id", :inverse_of => :user, :class_name => "JamRuby::MusicSession" # sessions *created* by the user has_many :music_sessions, :through => :music_session_clients, :class_name => "JamRuby::MusicSession" + # invitations has_many :received_invitations, :foreign_key => "receiver_id", :inverse_of => :receiver, :class_name => "JamRuby::Invitation" has_many :sent_invitations, :foreign_key => "sender_id", :inverse_of => :sender, :class_name => "JamRuby::Invitation" @@ -46,6 +54,11 @@ module JamRuby return @online end + def photo_url + # TODO: move image path to config + @photo_url = "http://www.jamkazam.com/images/users/photos/#{self.id}.gif"; + end + def should_validate_password? updating_password || new_record? end @@ -60,6 +73,24 @@ module JamRuby return id end + def self.save(params) + if params[:id].nil? + user = User.new() + else + user = User.find(params[:id]) + end + + @user = User.find(params[:id]) + @user.email = params[:email] + @user.musician = params[:musician] + if @user.musician + @user.instruments = params[:instruments] + @user.bands = params[:bands] + end + @user.save + return user + end + private def create_remember_token self.remember_token = SecureRandom.urlsafe_base64 diff --git a/lib/jam_ruby/models/user_instrument.rb b/lib/jam_ruby/models/user_instrument.rb new file mode 100644 index 000000000..080b8def7 --- /dev/null +++ b/lib/jam_ruby/models/user_instrument.rb @@ -0,0 +1,10 @@ +module JamRuby + class UserInstrument < ActiveRecord::Base + + self.table_name = "users_instruments" + + belongs_to :user + belongs_to :instrument + + end +end \ No newline at end of file From 6ba6b7d5958bfc8e73be0190f9238ab36290002c Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Mon, 29 Oct 2012 20:56:51 -0400 Subject: [PATCH 5/7] fix instruments part of payload --- lib/jam_ruby/models/user.rb | 2 +- lib/jam_ruby/models/user_instrument.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index 6ca9df5c6..f5389e01b 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -2,7 +2,7 @@ module JamRuby class User < ActiveRecord::Base attr_accessible :name, :email, :password, :password_confirmation - attr_accessor :updating_password, :online, :photo_url + attr_accessor :updating_password self.primary_key = 'id' diff --git a/lib/jam_ruby/models/user_instrument.rb b/lib/jam_ruby/models/user_instrument.rb index 080b8def7..8da3a70fd 100644 --- a/lib/jam_ruby/models/user_instrument.rb +++ b/lib/jam_ruby/models/user_instrument.rb @@ -6,5 +6,9 @@ module JamRuby belongs_to :user belongs_to :instrument + def description + @description = self.instrument.description + end + end end \ No newline at end of file From bc3b0e5c5773fc4f6c82e448e7f8504ed66f4ee7 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 30 Oct 2012 01:42:16 -0400 Subject: [PATCH 6/7] add bands to user details API, renamed band/musician related user models --- lib/jam_ruby.rb | 3 ++- lib/jam_ruby/models/band.rb | 14 ++++++----- lib/jam_ruby/models/band_musician.rb | 29 ++++++++++++++++++++++ lib/jam_ruby/models/genre.rb | 5 +++- lib/jam_ruby/models/instrument.rb | 4 +-- lib/jam_ruby/models/musician_instrument.rb | 16 ++++++++++++ lib/jam_ruby/models/user.rb | 7 +++--- 7 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 lib/jam_ruby/models/band_musician.rb create mode 100644 lib/jam_ruby/models/musician_instrument.rb diff --git a/lib/jam_ruby.rb b/lib/jam_ruby.rb index 8887749ea..4cd423c8e 100644 --- a/lib/jam_ruby.rb +++ b/lib/jam_ruby.rb @@ -19,7 +19,8 @@ require "jam_ruby/models/music_session" require "jam_ruby/models/invitation" require "jam_ruby/models/friend_request" require "jam_ruby/models/instrument" -require "jam_ruby/models/user_instrument" +require "jam_ruby/models/musician_instrument" +require "jam_ruby/models/band_musician" include Jampb diff --git a/lib/jam_ruby/models/band.rb b/lib/jam_ruby/models/band.rb index 663a2a40d..904408115 100644 --- a/lib/jam_ruby/models/band.rb +++ b/lib/jam_ruby/models/band.rb @@ -1,21 +1,23 @@ module JamRuby class Band < ActiveRecord::Base - attr_accessor :photo_url, :logo_url - self.primary_key = 'id' - has_and_belongs_to_many :users, :class_name => "JamRuby::User" - has_many :genres, :class_name => "JamRuby::Genre" + # musicians + has_many :band_musicians + has_many :users, :through => :band_musicians, :class_name => "JamRuby::User" + + # genres + has_and_belongs_to_many :genres, :class_name => "JamRuby::Genre", :join_table => "bands_genres" def photo_url # TODO: move image path to config - @photo_url = "http://www.jamkazam.com/images/bands/photos/#{self.id}.gif"; + @photo_url = "http://www.jamkazam.com/images/bands/photos/#{self.id}.gif" end def logo_url # TODO: move image path to config - @logo_url = "http://www.jamkazam.com/images/bands/logos/#{self.id}.gif"; + @logo_url = "http://www.jamkazam.com/images/bands/logos/#{self.id}.gif" end end diff --git a/lib/jam_ruby/models/band_musician.rb b/lib/jam_ruby/models/band_musician.rb new file mode 100644 index 000000000..a750bafe4 --- /dev/null +++ b/lib/jam_ruby/models/band_musician.rb @@ -0,0 +1,29 @@ +module JamRuby + class BandMusician < ActiveRecord::Base + + self.table_name = "bands_musicians" + + self.primary_key = 'id' + + belongs_to :user + belongs_to :band + + # name, genres, photo_url, and logo_url are needed here for the RABL file + def name + @name = self.band.name + end + + def genres + @genres = self.band.genres + end + + def photo_url + @photo_url = self.band.photo_url + end + + def logo_url + @logo_url = self.band.logo_url + end + + end +end \ No newline at end of file diff --git a/lib/jam_ruby/models/genre.rb b/lib/jam_ruby/models/genre.rb index fb3d692a0..1649825e2 100644 --- a/lib/jam_ruby/models/genre.rb +++ b/lib/jam_ruby/models/genre.rb @@ -3,7 +3,10 @@ module JamRuby self.primary_key = 'id' - has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" + # bands + has_and_belongs_to_many :bands, :class_name => "JamRuby::Band", :join_table => "bands_genres" + + # music sessions has_and_belongs_to_many :music_sessions, :class_name => "JamRuby::MusicSession", :join_table => "genres_music_sessions" end diff --git a/lib/jam_ruby/models/instrument.rb b/lib/jam_ruby/models/instrument.rb index db3019be9..9119d6a94 100644 --- a/lib/jam_ruby/models/instrument.rb +++ b/lib/jam_ruby/models/instrument.rb @@ -4,8 +4,8 @@ module JamRuby self.primary_key = 'id' # users - has_many :user_instruments - has_many :users, :through => :user_instruments, :class_name => "JamRuby::User" + has_many :musician_instruments + has_many :users, :through => :musician_instruments, :class_name => "JamRuby::User" # music sessions has_and_belongs_to_many :music_sessions, :class_name => "JamRuby::MusicSession", :join_table => "genres_music_sessions" diff --git a/lib/jam_ruby/models/musician_instrument.rb b/lib/jam_ruby/models/musician_instrument.rb new file mode 100644 index 000000000..2fd11e64e --- /dev/null +++ b/lib/jam_ruby/models/musician_instrument.rb @@ -0,0 +1,16 @@ +module JamRuby + class MusicianInstrument < ActiveRecord::Base + + self.table_name = "musicians_instruments" + + self.primary_key = 'id' + + belongs_to :user + belongs_to :instrument + + def description + @description = self.instrument.description + end + + 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 f5389e01b..f80869d61 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -13,11 +13,12 @@ module JamRuby has_many :friend_requests, :class_name => "JamRuby::FriendRequest" # instruments - has_many :user_instruments - has_many :instruments, :through => :user_instruments, :class_name => "JamRuby::Instrument" + has_many :musician_instruments + has_many :instruments, :through => :musician_instruments, :class_name => "JamRuby::Instrument" # bands - has_and_belongs_to_many :bands, :class_name => "JamRuby::Band" + has_many :band_musicians + has_many :bands, :through => :band_musicians, :class_name => "JamRuby::Band" # friends has_many :friendships, :class_name => "JamRuby::Friendship", :foreign_key => "user_id" From 6658c57a07ce249fba040cc9cf75433c1baa7fbe Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 30 Oct 2012 23:26:43 -0400 Subject: [PATCH 7/7] removed UserInstrument model --- lib/jam_ruby/models/user_instrument.rb | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 lib/jam_ruby/models/user_instrument.rb diff --git a/lib/jam_ruby/models/user_instrument.rb b/lib/jam_ruby/models/user_instrument.rb deleted file mode 100644 index 8da3a70fd..000000000 --- a/lib/jam_ruby/models/user_instrument.rb +++ /dev/null @@ -1,14 +0,0 @@ -module JamRuby - class UserInstrument < ActiveRecord::Base - - self.table_name = "users_instruments" - - belongs_to :user - belongs_to :instrument - - def description - @description = self.instrument.description - end - - end -end \ No newline at end of file