diff options
Diffstat (limited to 'users/app/models')
-rw-r--r-- | users/app/models/message.rb | 10 | ||||
-rw-r--r-- | users/app/models/user.rb | 12 | ||||
-rw-r--r-- | users/app/models/user_message.rb | 25 |
3 files changed, 47 insertions, 0 deletions
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.rb b/users/app/models/user.rb index 720f5a9..fe3a127 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -72,6 +72,18 @@ class User < CouchRest::Model::Base Ticket.for_user(self).limit(count).all #defaults to having most recent updated first end + def messages(unseen = true) + + user_messages = unseen ? UserMessage.by_user_id_and_seen(:key => [self.id, false]).all : UserMessage.by_user_id(:key => self.id).all + + messages = [] + user_messages.each do |um| + messages << Message.find(um.message.id) + end + messages + + end + # DEPRECATED # # Please set the key on the identity directly diff --git a/users/app/models/user_message.rb b/users/app/models/user_message.rb new file mode 100644 index 0000000..37aae0b --- /dev/null +++ b/users/app/models/user_message.rb @@ -0,0 +1,25 @@ +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 + + # should not have multiple rows connecting one user to particular message: + validates_uniqueness_of :user_id, :scope => [:message_id] + + property :seen, TrueClass, :default => false + + design do + 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')) + + end + +end |