Module: Hypostasis::Repository

Extended by:
ActiveSupport::Concern
Defined in:
lib/hypostasis/repository.rb,
lib/hypostasis/repository/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.0.2"

Instance Method Summary collapse

Instance Method Details

#find(klass, criteria) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/hypostasis/repository.rb', line 37

def find(klass, criteria)
  if criteria.is_a?(String)
    find_by_id(klass, criteria)
  elsif criteria.is_a?(Hash)
    # ...
  else
    raise ArgumentError, 'criteria must be a String or Hash'
  end
end

#initializeObject



16
17
18
19
20
# File 'lib/hypostasis/repository.rb', line 16

def initialize
  setup_hypostasis_configuration
  open_hypostasis_directory
  super
end

#store(object) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/hypostasis/repository.rb', line 22

def store(object)
  repo_id = generate_repository_id
  object_space = @hypostasis_directory[object.class.to_s][repo_id]
  object.instance_variable_set(:@hypostasis_repository_id, repo_id)
  @hypostasis[:database].transact do |tr|
    tr.clear_range_start_with(object_space)
    object.instance_variables.each do |ivar|
      next if ivar == :@hypostasis_repository_id
      value = object.instance_variable_get(ivar).to_msgpack
      tr.set(object_space[ivar.to_s], value)
    end
  end
  object
end