Class: Kaal::Internal::ActiveRecord::DefinitionRegistry
- Inherits:
-
Definition::Registry
show all
- Defined in:
- lib/kaal/internal/active_record/definition_registry.rb,
sig/kaal/internal/active_record/definition_registry.rbs
Overview
Active Record-backed registry for scheduler definitions.
Instance Method Summary
collapse
-
#all_definitions ⇒ Kaal::rbs_any
-
#enabled_definitions ⇒ Kaal::rbs_any
-
#find_definition(key) ⇒ Kaal::rbs_any
-
#initialize(connection: nil, model: DefinitionRecord) ⇒ DefinitionRegistry
constructor
A new instance of DefinitionRegistry.
-
#normalize(record) ⇒ nil, Kaal::rbs_any
-
#normalize_definition_record(record) ⇒ { key: Kaal::rbs_any, cron: Kaal::rbs_any, enabled: Kaal::rbs_any, source: Kaal::rbs_any, metadata: Kaal::rbs_any, created_at: Kaal::rbs_any, updated_at: Kaal::rbs_any, disabled_at: Kaal::rbs_any }
-
#remove_definition(key) ⇒ nil, Kaal::rbs_any
-
#upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {}) ⇒ Kaal::rbs_any
#disable_definition, #enable_definition, #update_definition_enabled_state
Constructor Details
#initialize(connection: nil, model: DefinitionRecord) ⇒ DefinitionRegistry
Returns a new instance of DefinitionRegistry.
Instance Method Details
#all_definitions ⇒ Kaal::rbs_any
50
51
52
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 50
def all_definitions
@model.order(:key).map { |record| normalize(record) }
end
|
#enabled_definitions ⇒ Kaal::rbs_any
54
55
56
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 54
def enabled_definitions
@model.where(enabled: true).order(:key).map { |record| normalize(record) }
end
|
#find_definition(key) ⇒ Kaal::rbs_any
46
47
48
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 46
def find_definition(key)
normalize(@model.find_by(key: key))
end
|
#normalize(record) ⇒ nil, Kaal::rbs_any
60
61
62
63
64
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 60
def normalize(record)
return nil unless record
normalize_definition_record(record)
end
|
#normalize_definition_record(record) ⇒ { key: Kaal::rbs_any, cron: Kaal::rbs_any, enabled: Kaal::rbs_any, source: Kaal::rbs_any, metadata: Kaal::rbs_any, created_at: Kaal::rbs_any, updated_at: Kaal::rbs_any, disabled_at: Kaal::rbs_any }
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 66
def normalize_definition_record(record)
{
key: record.key,
cron: record.cron,
enabled: record.enabled ? true : false,
source: record.source,
metadata: Kaal::Definition::PersistenceHelpers.parse_metadata(record.metadata),
created_at: record.created_at,
updated_at: record.updated_at,
disabled_at: record.disabled_at
}
end
|
#remove_definition(key) ⇒ nil, Kaal::rbs_any
37
38
39
40
41
42
43
44
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 37
def remove_definition(key)
record = @model.find_by(key: key)
return nil unless record
normalized = normalize(record)
record.destroy!
normalized
end
|
#upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {}) ⇒ Kaal::rbs_any
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/kaal/internal/active_record/definition_registry.rb', line 22
def upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {})
record = @model.find_or_initialize_by(key: key)
existing = record.persisted? ? { enabled: record.enabled, disabled_at: record.disabled_at } : nil
now = Time.now.utc
record.cron = cron
record.enabled = enabled
record.source = source
record.metadata = JSON.generate(metadata || {})
record.created_at ||= now
record.updated_at = now
record.disabled_at = Kaal::Definition::PersistenceHelpers.disabled_at_for(existing, enabled, now)
record.save!
normalize(record)
end
|