Class: InOrder::Element
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- InOrder::Element
- Extended by:
- Aux::GetKeys
- Defined in:
- app/models/in_order/element.rb
Overview
An element of a persisted linked-list
Class Method Summary collapse
- .delete_elements(*keys) ⇒ Object
- .delete_list(*keys) ⇒ Object
- .fetch_with_keys(*keys) ⇒ Object (also: fetch_with_key)
- .find_with_keys(*keys) ⇒ Object (also: find_with_key)
- .first_element(*keys) ⇒ Object
- .for_subject(*keys) ⇒ Object
- .has_subject?(*keys, &block) ⇒ Boolean
- .last_element(*keys) ⇒ Object
- .link_elements(end_of_former, beginning_of_latter) ⇒ Object
Instance Method Summary collapse
Class Method Details
.delete_elements(*keys) ⇒ Object
73 74 75 76 77 |
# File 'app/models/in_order/element.rb', line 73 def delete_elements(*keys) transaction do by_keys(get_keys keys).map {|element| element.destroy } end end |
.delete_list(*keys) ⇒ Object
79 80 81 |
# File 'app/models/in_order/element.rb', line 79 def delete_list(*keys) by_keys(get_keys keys).delete_all end |
.fetch_with_keys(*keys) ⇒ Object Also known as: fetch_with_key
68 69 70 |
# File 'app/models/in_order/element.rb', line 68 def fetch_with_keys(*keys) find_with_keys(keys).include_all end |
.find_with_keys(*keys) ⇒ Object Also known as: find_with_key
61 62 63 64 65 |
# File 'app/models/in_order/element.rb', line 61 def find_with_keys(*keys) keys = get_keys(keys) by_owner_keys(*keys.owner_key.to_a).by_scope(keys.scope) end |
.first_element(*keys) ⇒ Object
83 84 85 86 87 88 89 |
# File 'app/models/in_order/element.rb', line 83 def first_element(*keys) keyed = by_keys(get_keys keys) if keyed.exists? keyed.where.not(id: keyed.pluck(:element_id)).first end end |
.for_subject(*keys) ⇒ Object
95 96 97 98 99 |
# File 'app/models/in_order/element.rb', line 95 def for_subject(*keys) poly_key = Aux::PolyKey.new(yield) by_keys(get_keys keys).by_subject_keys(*poly_key.to_a) end |
.has_subject?(*keys, &block) ⇒ Boolean
101 102 103 |
# File 'app/models/in_order/element.rb', line 101 def has_subject?(*keys, &block) for_subject(keys, &block).exists? end |
.last_element(*keys) ⇒ Object
91 92 93 |
# File 'app/models/in_order/element.rb', line 91 def last_element(*keys) by_keys(get_keys keys).null_element.first end |
.link_elements(end_of_former, beginning_of_latter) ⇒ Object
105 106 107 |
# File 'app/models/in_order/element.rb', line 105 def link_elements(end_of_former, beginning_of_latter) end_of_former.update_attribute :element, beginning_of_latter end |
Instance Method Details
#as_json ⇒ Object
43 44 45 46 47 |
# File 'app/models/in_order/element.rb', line 43 def as_json(*) super except: %i(created_at updated_at), #include: :subject, methods: :value end |
#iterator ⇒ Object
56 57 58 |
# File 'app/models/in_order/element.rb', line 56 def iterator Aux::ElementIterator.new(to_keys) end |
#to_keys ⇒ Object
52 53 54 |
# File 'app/models/in_order/element.rb', line 52 def to_keys Aux::Keys.new(owner, scope) end |
#to_s ⇒ Object
39 40 41 |
# File 'app/models/in_order/element.rb', line 39 def to_s call.to_s end |
#value ⇒ Object
48 49 50 |
# File 'app/models/in_order/element.rb', line 48 def value subject.as_json end |