Module: Hari

Extended by:
Hari, Configuration, Node::Queries
Included in:
Hari
Defined in:
lib/hari.rb,
lib/hari/keys.rb,
lib/hari/node.rb,
lib/hari/entity.rb,
lib/hari/errors.rb,
lib/hari/object.rb,
lib/hari/version.rb,
lib/hari/keys/key.rb,
lib/hari/keys/set.rb,
lib/hari/relation.rb,
lib/hari/keys/hash.rb,
lib/hari/keys/list.rb,
lib/hari/node/index.rb,
lib/hari/keys/string.rb,
lib/hari/node/queries.rb,
lib/hari/configuration.rb,
lib/hari/serialization.rb,
lib/hari/entity/property.rb,
lib/hari/keys/sorted_set.rb,
lib/hari/node/repository.rb,
lib/hari/entity/repository.rb,
lib/hari/node/queries/type.rb,
lib/hari/node/serialization.rb,
lib/hari/configuration/redis.rb,
lib/hari/relation/sorted_set.rb,
lib/hari/entity/serialization.rb,
lib/hari/node/queries/relation.rb,
lib/hari/entity/property/builder.rb,
lib/hari/entity/serialization/date.rb,
lib/hari/entity/serialization/hash.rb,
lib/hari/entity/serialization/time.rb,
lib/hari/entity/serialization/array.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, Keys Classes: Entity, HariException, InvalidQuery, Node, NotFound, Object, Relation, SerializationError, ValidationsFailed

Constant Summary collapse

VERSION =
'0.0.5'
Serialization =
Hari::Entity::Serialization

Instance Method Summary collapse

Methods included from Configuration

configure

Methods included from Configuration::Redis

#redis, #redis=

Instance Method Details

#node(arg) ⇒ Object



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

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



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/hari.rb', line 46

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



38
39
40
41
42
43
44
# File 'lib/hari.rb', line 38

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

#node_type(model) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/hari.rb', line 59

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



74
75
76
# File 'lib/hari.rb', line 74

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

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



78
79
80
# File 'lib/hari.rb', line 78

def remove_relation!(type, from, target)
  relation!(type, from, target).delete
end