Module: Hari

Extended by:
Hari, Configuration, Node::Queries
Included in:
Hari
Defined in:
lib/hari.rb,
lib/hari/node.rb,
lib/hari/entity.rb,
lib/hari/errors.rb,
lib/hari/version.rb,
lib/hari/relation.rb,
lib/hari/node/queries.rb,
lib/hari/configuration.rb,
lib/hari/entity/property.rb,
lib/hari/node/repository.rb,
lib/hari/node/queries/set.rb,
lib/hari/entity/repository.rb,
lib/hari/node/queries/list.rb,
lib/hari/node/serialization.rb,
lib/hari/configuration/redis.rb,
lib/hari/relation/sorted_set.rb,
lib/hari/entity/serialization.rb,
lib/hari/relation/linked_list.rb,
lib/hari/node/queries/relation.rb,
lib/hari/entity/property/builder.rb,
lib/hari/node/queries/sorted_set.rb,
lib/hari/entity/serialization/date.rb,
lib/hari/entity/serialization/time.rb,
lib/hari/entity/serialization/float.rb,
lib/hari/node/queries/relation/step.rb,
lib/hari/entity/serialization/string.rb,
lib/hari/node/queries/relation/start.rb,
lib/hari/entity/serialization/boolean.rb,
lib/hari/entity/serialization/integer.rb,
lib/hari/entity/serialization/datetime.rb,
lib/hari/node/queries/relation/runnable.rb

Defined Under Namespace

Modules: Configuration Classes: Entity, HariException, InvalidQuery, Node, NotFound, Relation, SerializationError, ValidationsFailed

Constant Summary collapse

VERSION =
'0.0.3'

Instance Method Summary collapse

Methods included from Configuration

configure

Methods included from Configuration::Redis

#redis, #redis=

Instance Method Details

#node(arg) ⇒ Object



24
25
26
27
28
29
# File 'lib/hari.rb', line 24

def node(arg)
  type, id = node_type(arg), node_id(arg)
  node = Node.new(model_id: id)
  node.instance_variable_set '@node_type', type.to_s
  node
end

#node_id(model) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/hari.rb', line 39

def node_id(model)
  case model
  when ::String, ::Symbol
    model.to_s.split('#').last
  when ::Hash
    model.first[1]
  when Hari::Node
    model.model_id
  else
    model.id
  end
end

#node_key(model) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/hari.rb', line 31

def node_key(model)
  if type = node_type(model)
    "#{type}##{node_id(model)}"
  else
    node_id model
  end
end

#node_type(model) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/hari.rb', line 52

def node_type(model)
  case model
  when ::String, ::Symbol
    model.to_s.split('#').first
  when ::Hash
    model.first[0]
  when Hari::Node
    model.node_type
  when Hari::Entity
    nil
  else
    model.class.to_s.underscore.split('/').last
  end
end

#relation!(type, from, target) ⇒ Object



67
68
69
# File 'lib/hari.rb', line 67

def relation!(type, from, target)
  Relation.create type, from, target
end