diff options
| -rw-r--r-- | users/app/controllers/v1/messages_controller.rb | 25 | ||||
| -rw-r--r-- | users/app/models/message.rb | 10 | ||||
| -rw-r--r-- | users/app/models/user_message.rb | 22 | ||||
| -rw-r--r-- | users/config/routes.rb | 2 | 
4 files changed, 59 insertions, 0 deletions
| diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb new file mode 100644 index 0000000..e67e2a3 --- /dev/null +++ b/users/app/controllers/v1/messages_controller.rb @@ -0,0 +1,25 @@ +module V1 +  class MessagesController < ApplicationController + +    # TODO need to add authentication +    respond_to :json + +    def user_messages(unseen = true) +      user_messages = unseen ? UserMessage.by_user_id_and_seen(:key => [params[:user_id], false]).all : UserMessage.by_user_id(:key => params[:user_id]).all + +      messages = [] +      user_messages.each do |um| +        messages << Message.find(um.message.id) +      end + +      render json: messages +    end + + +    # only for PUT +    def mark_read +      # params[:user_id] params[:message_id] +    end + +  end +end diff --git a/users/app/models/message.rb b/users/app/models/message.rb new file mode 100644 index 0000000..38fa71e --- /dev/null +++ b/users/app/models/message.rb @@ -0,0 +1,10 @@ +class Message < CouchRest::Model::Base + +  use_database :messages + +  property :text, String + +  design do +  end + +end diff --git a/users/app/models/user_message.rb b/users/app/models/user_message.rb new file mode 100644 index 0000000..0b2ce17 --- /dev/null +++ b/users/app/models/user_message.rb @@ -0,0 +1,22 @@ +class UserMessage < CouchRest::Model::Base + +  use_database :user_messages +  belongs_to :user +  belongs_to :message + +  validates :user_id, presence: true +  validates :message_id, presence: true + + +  property :seen, TrueClass, :default => false + +  design do +    view :by_user_id +    view :by_message_id +    view :by_user_id_and_seen +    own_path = Pathname.new(File.dirname(__FILE__)) +    load_views(own_path.join('..', 'designs', 'user_message')) + +  end + +end diff --git a/users/config/routes.rb b/users/config/routes.rb index 736b283..9a7c531 100644 --- a/users/config/routes.rb +++ b/users/config/routes.rb @@ -6,6 +6,8 @@ Rails.application.routes.draw do      resources :sessions, :only => [:new, :create, :update]      delete "logout" => "sessions#destroy", :as => "logout"      resources :users, :only => [:create, :update, :destroy, :index] +    get "user_messages/:user_id" => "messages#user_messages" +    put "mark_read/:user_id/:message_id" => "messages#mark_read"    end    scope "(:locale)", :locale => MATCH_LOCALE do | 
