Class: Kaal::Definition::MemoryEngine
- Inherits:
-
Registry
- Object
- Registry
- Kaal::Definition::MemoryEngine
show all
- Defined in:
- lib/kaal/definition/memory_engine.rb
Overview
In-memory definition registry used when no persistent backend is configured.
Instance Method Summary
collapse
Methods inherited from Registry
#disable_definition, #enable_definition, #enabled_definitions
Constructor Details
Returns a new instance of MemoryEngine.
15
16
17
18
19
|
# File 'lib/kaal/definition/memory_engine.rb', line 15
def initialize
super
@definitions = {}
@mutex = Mutex.new
end
|
Instance Method Details
#all_definitions ⇒ Object
57
58
59
|
# File 'lib/kaal/definition/memory_engine.rb', line 57
def all_definitions
@mutex.synchronize { @definitions.values.map(&:deep_dup) }
end
|
#clear ⇒ Object
61
62
63
|
# File 'lib/kaal/definition/memory_engine.rb', line 61
def clear
@mutex.synchronize { @definitions.clear }
end
|
#find_definition(key) ⇒ Object
53
54
55
|
# File 'lib/kaal/definition/memory_engine.rb', line 53
def find_definition(key)
@mutex.synchronize { @definitions[key]&.deep_dup }
end
|
#remove_definition(key) ⇒ Object
49
50
51
|
# File 'lib/kaal/definition/memory_engine.rb', line 49
def remove_definition(key)
@mutex.synchronize { @definitions.delete(key)&.deep_dup }
end
|
#upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {}) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/kaal/definition/memory_engine.rb', line 21
def upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {})
@mutex.synchronize do
now = Time.current
existing = @definitions[key]
stored_metadata = (metadata || {}).deep_dup
disabled_at = if enabled
nil
elsif existing && existing[:enabled] == false
existing[:disabled_at]
else
now
end
definition = {
key: key,
cron: cron,
enabled: enabled,
source: source,
metadata: stored_metadata,
created_at: existing ? existing[:created_at] : now,
updated_at: now,
disabled_at:
}
@definitions[key] = definition
definition.deep_dup
end
end
|