diff options
author | jessib <jessib@riseup.net> | 2013-12-24 11:13:28 -0800 |
---|---|---|
committer | jessib <jessib@riseup.net> | 2013-12-24 12:36:24 -0800 |
commit | a9ff52501e9c04edacd250dd94ee3f3ad28cd73d (patch) | |
tree | 6e461fc9ce1fa9073a80195b9981039b764af6a6 /users | |
parent | e8032fd9027435c57572fd0d8bab411841859cbc (diff) |
API method to mark a user's message as read (will refactor)
Diffstat (limited to 'users')
-rw-r--r-- | users/app/controllers/v1/messages_controller.rb | 13 | ||||
-rw-r--r-- | users/app/models/user_message.rb | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb index e67e2a3..a4e9aec 100644 --- a/users/app/controllers/v1/messages_controller.rb +++ b/users/app/controllers/v1/messages_controller.rb @@ -4,6 +4,7 @@ module V1 # TODO need to add authentication respond_to :json + # for now, will not pass unseen, so unseen will always be true 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 @@ -16,9 +17,17 @@ module V1 end - # only for PUT + # routes ensure this is only for PUT def mark_read - # params[:user_id] params[:message_id] + user_message = UserMessage.find_by_user_id_and_message_id([params[:user_id], params[:message_id]]) + user_message.seen = true + + # TODO what to return? + if user_message.save + render json: true + else + render json: false + end end end diff --git a/users/app/models/user_message.rb b/users/app/models/user_message.rb index 0b2ce17..37aae0b 100644 --- a/users/app/models/user_message.rb +++ b/users/app/models/user_message.rb @@ -7,6 +7,8 @@ class UserMessage < CouchRest::Model::Base validates :user_id, presence: true validates :message_id, presence: true + # should not have multiple rows connecting one user to particular message: + validates_uniqueness_of :user_id, :scope => [:message_id] property :seen, TrueClass, :default => false @@ -14,6 +16,7 @@ class UserMessage < CouchRest::Model::Base view :by_user_id view :by_message_id view :by_user_id_and_seen + view :by_user_id_and_message_id own_path = Pathname.new(File.dirname(__FILE__)) load_views(own_path.join('..', 'designs', 'user_message')) |