Class: Kaal::Internal::ActiveRecord::DefinitionRegistry
Overview
Active Record-backed registry for scheduler definitions.
Instance Method Summary
collapse
#disable_definition, #enable_definition
Constructor Details
#initialize(connection: nil, model: DefinitionRecord) ⇒ DefinitionRegistry
Returns a new instance of DefinitionRegistry.
Instance Method Details
#all_definitions ⇒ Object
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 ⇒ Object
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) ⇒ Object
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
|
#remove_definition(key) ⇒ Object
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: {}) ⇒ Object
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
|