jam-cloud/ruby/lib/jam_ruby/models/chat_message.rb

57 lines
1.3 KiB
Ruby

module JamRuby
class ChatMessage < ActiveRecord::Base
self.table_name = 'chat_messages'
self.primary_key = 'id'
default_scope order('created_at DESC')
attr_accessible :user_id, :message, :music_session_id
belongs_to :user
belongs_to :music_session
validates :user, presence: true
validates :message, length: {minimum: 1, maximum: 255}, no_profanity: true
class << self
@@mq_router = MQRouter.new
@@message_factory = MessageFactory.new
def index(user, params = {})
limit = params[:limit]
limit ||= 20
limit = limit.to_i
start = params[:start].presence
start = start.to_i || 0
query = ChatMessage.offset(start).limit(limit)
if query.length == 0
[query, nil]
elsif query.length < limit
[query, nil]
else
[query, start + limit]
end
end
def send_chat_msg(music_session, chat_msg, user, client_id)
msg = @@message_factory.chat_message(
music_session.id,
user.name,
user.id,
chat_msg.message,
chat_msg.id,
chat_msg.created_at.utc.iso8601
)
@@mq_router.server_publish_to_session(music_session, msg, sender = {:client_id => client_id})
end
end
end
end