Class: Libertree::Model::ContactList
- Inherits:
-
Object
- Object
- Libertree::Model::ContactList
- Defined in:
- lib/libertree/model/contact-list.rb
Instance Method Summary collapse
- #<<(member) ⇒ Object
- #account ⇒ Object
- #delete_cascade ⇒ Object
- #member_ids ⇒ Object
- #members ⇒ Object
- #members=(arg) ⇒ Object
-
#refresh_rivers ⇒ Object
refresh any river containing a reference to this contact list.
Instance Method Details
#<<(member) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/libertree/model/contact-list.rb', line 47 def <<(member) # refuse to add anything that's not a Member return unless member.is_a? Member Libertree::DB.dbh.transaction do unless self.member_ids.include?(member.id) Libertree::DB.dbh[:contact_lists_members]. insert(contact_list_id: self.id, member_id: member.id) end end end |
#account ⇒ Object
4 5 6 |
# File 'lib/libertree/model/contact-list.rb', line 4 def account @account ||= Account[self.account_id] end |
#delete_cascade ⇒ Object
43 44 45 |
# File 'lib/libertree/model/contact-list.rb', line 43 def delete_cascade DB.dbh[ "SELECT delete_cascade_contact_list(?)", self.id ].get end |
#member_ids ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/libertree/model/contact-list.rb', line 26 def member_ids Libertree::DB.dbh[:contact_lists_members]. select(:member_id). where(:contact_list_id => self.id). all. flat_map(&:values) end |
#members ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/libertree/model/contact-list.rb', line 8 def members return @members if @members @members = Member.s( %{ SELECT m.* FROM contact_lists_members clm , members m WHERE clm.contact_list_id = ? AND m.id = clm.member_id }, self.id ) end |
#members=(arg) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/libertree/model/contact-list.rb', line 34 def members=(arg) DB.dbh.transaction do DB.dbh[ "DELETE FROM contact_lists_members WHERE contact_list_id = ?", self.id ].get Array(arg).each do |member_id_s| DB.dbh[ "INSERT INTO contact_lists_members ( contact_list_id, member_id ) VALUES ( ?, ? )", self.id, member_id_s.to_i ].get end end end |
#refresh_rivers ⇒ Object
refresh any river containing a reference to this contact list
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/libertree/model/contact-list.rb', line 60 def refresh_rivers rivers = account.rivers.select do |r| vals = r.parsed_query['contact-list'].values.flatten(1) ! vals.empty? && vals.map(&:first).include?(self.id) end # refresh rivers in background jobs rivers.each do |river| if ! river.appended_to_all Libertree::Model::Job.create( task: 'river:refresh', params: { 'river_id' => river.id, }.to_json ) end end end |