Module: Keymaker::Node
- Defined in:
- lib/keymaker/node.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #create ⇒ Object
- #create_or_update ⇒ Object
- #initialize(attrs) ⇒ Object
- #neo_service ⇒ Object
- #new? ⇒ Boolean
- #sanitize(attrs) ⇒ Object
- #save ⇒ Object
- #update(attrs) ⇒ Object
Class Method Details
.included(base) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/keymaker/node.rb', line 7 def self.included(base) base.extend ActiveModel::Callbacks base.extend ClassMethods base.class_eval do attr_writer :new_node include ActiveModel::MassAssignmentSecurity include Keymaker::Indexing include Keymaker::Serialization attr_protected :created_at, :updated_at end base.after_save :update_indices base.class_attribute :property_traits base.class_attribute :indices_traits base.property_traits = {} base.indices_traits = {} base.property :active_record_id, Integer base.property :node_id, Integer base.property :created_at, DateTime base.property :updated_at, DateTime end |
Instance Method Details
#create ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/keymaker/node.rb', line 94 def create run_callbacks :create do neo_service.create_node(sanitize(attributes)).on_success do |response| self.node_id = response.neo4j_id self.new_node = false self end end end |
#create_or_update ⇒ Object
88 89 90 91 92 |
# File 'lib/keymaker/node.rb', line 88 def create_or_update run_callbacks :save do new? ? create : update(attributes) end end |
#initialize(attrs) ⇒ Object
67 68 69 70 |
# File 'lib/keymaker/node.rb', line 67 def initialize(attrs) @new_node = true process_attrs(attrs) if attrs.present? end |
#neo_service ⇒ Object
72 73 74 |
# File 'lib/keymaker/node.rb', line 72 def neo_service self.class.neo_service end |
#new? ⇒ Boolean
76 77 78 |
# File 'lib/keymaker/node.rb', line 76 def new? @new_node end |
#sanitize(attrs) ⇒ Object
80 81 82 |
# File 'lib/keymaker/node.rb', line 80 def sanitize(attrs) serializable_hash(except: :node_id).merge(attrs.except('node_id')).reject {|k,v| v.blank?} end |
#save ⇒ Object
84 85 86 |
# File 'lib/keymaker/node.rb', line 84 def save create_or_update end |
#update(attrs) ⇒ Object
104 105 106 107 |
# File 'lib/keymaker/node.rb', line 104 def update(attrs) process_attrs(sanitize(attrs.merge(updated_at: Time.now.utc.to_i))) neo_service.update_node_properties(node_id, sanitize(attributes)) end |