Class: Kaal::Definition::MemoryEngine
Overview
In-memory definition registry used when no persistent backend is configured.
Instance Method Summary
collapse
constantize, deep_dup, deep_merge, duplicable?, stringify_keys, symbolize_keys
Methods inherited from Registry
#disable_definition, #enable_definition, #enabled_definitions
Constructor Details
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 ⇒ Object
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 ⇒ Object
54
55
56
|
# File 'lib/kaal/definition/memory_engine.rb', line 54
def clear
@mutex.synchronize { @definitions.clear }
end
|
#find_definition(key) ⇒ Object
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) ⇒ Object
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: {}) ⇒ Object
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(metadata || {}),
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
|