Module: ActiveNode::Persistence::ClassMethods

Defined in:
lib/active_node/persistence.rb

Instance Method Summary collapse

Instance Method Details

#active_node_class(class_name, default_klass = nil) ⇒ Object



34
35
36
37
# File 'lib/active_node/persistence.rb', line 34

def active_node_class(class_name, default_klass=nil)
  klass = Module.const_get(class_name) rescue nil
  klass && klass < ActiveNode::Base && klass || default_klass
end

#data(hash) ⇒ Object



43
44
45
# File 'lib/active_node/persistence.rb', line 43

def data hash
  hash['data'].merge(id: extract_id(hash))
end

#extract_id(id) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/active_node/persistence.rb', line 47

def extract_id(id)
  case id
    when Array
      id.map { |i| extract_id(i) }
    when ActiveNode::Base
      id.id
    else
      get_id(id).to_i
  end
end

#find_by_cypher(query, params = {}, klass = nil) ⇒ Object



22
23
24
# File 'lib/active_node/persistence.rb', line 22

def find_by_cypher query, params={}, klass=nil
  wrap(Neo.db.execute_query(query, params)['data'].map(&:first), klass)
end

#graphObject



39
40
41
# File 'lib/active_node/persistence.rb', line 39

def graph
  ActiveNode::Graph.new(self)
end

#labelObject



26
27
28
# File 'lib/active_node/persistence.rb', line 26

def label
  name
end

#timestampsObject



17
18
19
20
# File 'lib/active_node/persistence.rb', line 17

def timestamps
  attribute :created_at, type: Time
  attribute :updated_at, type: Time
end

#to_neo(value) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/active_node/persistence.rb', line 62

def to_neo value
  case value
    when Time, DateTime
      value.utc.iso8601(3)
    when Date
      value.to_s
    else
      value
  end
end

#to_neo!(attrs) ⇒ Object



58
59
60
# File 'lib/active_node/persistence.rb', line 58

def to_neo! attrs
  attrs.each { |k, v| attrs[k] = to_neo v }
end

#wrap(node, klass = nil) ⇒ Object



30
31
32
# File 'lib/active_node/persistence.rb', line 30

def wrap node, klass=nil
  node.is_a?(Array) ? new_instances(node, klass) : new_instance(node, klass)
end