Class: Kaal::Definition::MemoryEngine

Inherits:
Registry
  • Object
show all
Includes:
Support::HashTools
Defined in:
lib/kaal/definition/memory_engine.rb,
sig/kaal/definition/memory_engine.rbs

Overview

In-memory definition registry used when no persistent backend is configured.

Instance Method Summary collapse

Methods included from Support::HashTools

constantize, deep_dup, deep_merge, duplicable?, stringify_keys, symbolize_keys

Methods inherited from Registry

#disable_definition, #enable_definition, #enabled_definitions, #update_definition_enabled_state

Constructor Details

#initialize ⇒ MemoryEngine

Returns a new instance of MemoryEngine.



17
18
19
20
21
# File 'lib/kaal/definition/memory_engine.rb', line 17

def initialize
  super
  @definitions = {}
  @mutex = Mutex.new
end

Instance Method Details

#all_definitions ⇒ Kaal::rbs_any

Returns:

  • (Kaal::rbs_any)


50
51
52
# File 'lib/kaal/definition/memory_engine.rb', line 50

def all_definitions
  @mutex.synchronize { @definitions.values.sort_by { |definition| definition[:key] }.map { |definition| deep_dup(definition) } }
end

#clear ⇒ Kaal::rbs_any

Returns:

  • (Kaal::rbs_any)


54
55
56
# File 'lib/kaal/definition/memory_engine.rb', line 54

def clear
  @mutex.synchronize { @definitions.clear }
end

#find_definition(key) ⇒ Kaal::rbs_any

Parameters:

  • key (Kaal::rbs_any)

Returns:

  • (Kaal::rbs_any)


46
47
48
# File 'lib/kaal/definition/memory_engine.rb', line 46

def find_definition(key)
  @mutex.synchronize { deep_dup(@definitions[key]) }
end

#remove_definition(key) ⇒ Kaal::rbs_any

Parameters:

  • key (Kaal::rbs_any)

Returns:

  • (Kaal::rbs_any)


42
43
44
# File 'lib/kaal/definition/memory_engine.rb', line 42

def remove_definition(key)
  @mutex.synchronize { deep_dup(@definitions.delete(key)) }
end

#upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {}) ⇒ Kaal::rbs_any

Parameters:

  • key: (Kaal::rbs_any)
  • cron: (Kaal::rbs_any)
  • enabled: (Boolean) (defaults to: true)
  • source: (::String) (defaults to: 'code')
  • metadata: (::Hash[Kaal::rbs_any, Kaal::rbs_any]) (defaults to: {})

Returns:

  • (Kaal::rbs_any)


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

def upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {})
  @mutex.synchronize do
    now = Time.now.utc
    existing = @definitions[key]
    definition = {
      key: key,
      cron: cron,
      enabled: enabled,
      source: source,
      metadata: deep_dup( || {}),
      created_at: existing ? existing[:created_at] : now,
      updated_at: now,
      disabled_at: PersistenceHelpers.disabled_at_for(existing, enabled, now)
    }
    @definitions[key] = definition
    deep_dup(definition)
  end
end