summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2013-12-23 16:44:18 -0800
committerjessib <jessib@riseup.net>2013-12-24 12:35:47 -0800
commite8032fd9027435c57572fd0d8bab411841859cbc (patch)
tree801d350e88c703e6b41c7cb86d758a30c1ec8fb8
parent314d6cce723558497165103658cbf013f1eb8e9a (diff)
Initial start to messages API.
-rw-r--r--users/app/controllers/v1/messages_controller.rb25
-rw-r--r--users/app/models/message.rb10
-rw-r--r--users/app/models/user_message.rb22
-rw-r--r--users/config/routes.rb2
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