From e8032fd9027435c57572fd0d8bab411841859cbc Mon Sep 17 00:00:00 2001 From: jessib Date: Mon, 23 Dec 2013 16:44:18 -0800 Subject: Initial start to messages API. --- users/app/controllers/v1/messages_controller.rb | 25 +++++++++++++++++++++++++ users/app/models/message.rb | 10 ++++++++++ users/app/models/user_message.rb | 22 ++++++++++++++++++++++ users/config/routes.rb | 2 ++ 4 files changed, 59 insertions(+) create mode 100644 users/app/controllers/v1/messages_controller.rb create mode 100644 users/app/models/message.rb create mode 100644 users/app/models/user_message.rb 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 -- cgit v1.2.3