Class: Aspera::PersistencyActionOnce

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/persistency_action_once.rb

Overview

Persist data on file system

Instance Method Summary collapse

Constructor Details

#initialize(manager:, data:, id:, delete: DELETE_DEFAULT, parse: PARSE_DEFAULT, format: FORMAT_DEFAULT, merge: MERGE_DEFAULT) ⇒ PersistencyActionOnce

Returns a new instance of PersistencyActionOnce.

Parameters:

  • :manager

    Mandatory Database

  • :data

    Mandatory object to persist, must be same object from begin to end (assume array by default)

  • :id

    Mandatory identifiers

  • :delete

    Optional delete persistency condition

  • :parse

    Optional parse method (default to JSON)

  • :format

    Optional dump method (default to JSON)

  • :merge

    Optional merge data from file to current data



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/aspera/persistency_action_once.rb', line 24

def initialize(manager:, data:, id:, delete: DELETE_DEFAULT, parse: PARSE_DEFAULT, format: FORMAT_DEFAULT, merge: MERGE_DEFAULT)
  Aspera.assert(MANAGER_METHODS.all?{|i|manager.respond_to?(i)}){"Manager must answer to #{MANAGER_METHODS}"}
  Aspera.assert(!data.nil?)
  Aspera.assert_type(id, String)
  Aspera.assert(!id.empty?)
  Aspera.assert_type(delete, Proc)
  Aspera.assert_type(parse, Proc)
  Aspera.assert_type(format, Proc)
  Aspera.assert_type(merge, Proc)
  @manager = manager
  @persisted_object = data
  @object_id = id
  @delete_condition = delete
  @persist_format = format
  value = @manager.get(@object_id)
  merge.call(@persisted_object, parse.call(value)) unless value.nil?
end

Instance Method Details

#dataObject



50
51
52
# File 'lib/aspera/persistency_action_once.rb', line 50

def data
  return @persisted_object
end

#saveObject



42
43
44
45
46
47
48
# File 'lib/aspera/persistency_action_once.rb', line 42

def save
  if @delete_condition.call(@persisted_object)
    @manager.delete(@object_id)
  else
    @manager.put(@object_id, @persist_format.call(@persisted_object))
  end
end