Class: Kaal::Definition::DatabaseEngine
- Defined in:
- lib/kaal/definition/database_engine.rb
Overview
Sequel-backed definition registry persisted in kaal_definitions.
Class Method Summary collapse
Instance Method Summary collapse
- #all_definitions ⇒ Object
- #enabled_definitions ⇒ Object
- #find_definition(key) ⇒ Object
-
#initialize(database:) ⇒ DatabaseEngine
constructor
A new instance of DatabaseEngine.
- #remove_definition(key) ⇒ Object
- #upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {}) ⇒ Object
Methods inherited from Registry
#disable_definition, #enable_definition
Constructor Details
#initialize(database:) ⇒ DatabaseEngine
Returns a new instance of DatabaseEngine.
16 17 18 19 |
# File 'lib/kaal/definition/database_engine.rb', line 16 def initialize(database:) super() @database = Kaal::Persistence::Database.new(database) end |
Class Method Details
.normalize_row(row) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/kaal/definition/database_engine.rb', line 66 def self.normalize_row(row) return nil unless row { key: row[:key], cron: row[:cron], enabled: row[:enabled] ? true : false, source: row[:source], metadata: PersistenceHelpers.(row[:metadata]), created_at: row[:created_at], updated_at: row[:updated_at], disabled_at: row[:disabled_at] } end |
Instance Method Details
#all_definitions ⇒ Object
58 59 60 |
# File 'lib/kaal/definition/database_engine.rb', line 58 def all_definitions dataset.order(:key).all.map { |row| self.class.normalize_row(row) } end |
#enabled_definitions ⇒ Object
62 63 64 |
# File 'lib/kaal/definition/database_engine.rb', line 62 def enabled_definitions dataset.where(enabled: true).order(:key).all.map { |row| self.class.normalize_row(row) } end |
#find_definition(key) ⇒ Object
54 55 56 |
# File 'lib/kaal/definition/database_engine.rb', line 54 def find_definition(key) self.class.normalize_row(dataset.where(key: key).first) end |
#remove_definition(key) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/kaal/definition/database_engine.rb', line 45 def remove_definition(key) rows = dataset.where(key: key) row = rows.first return nil unless row rows.delete self.class.normalize_row(row) 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 |
# File 'lib/kaal/definition/database_engine.rb', line 21 def upsert_definition(key:, cron:, enabled: true, source: 'code', metadata: {}) rows = dataset.where(key: key) existing = rows.first now = Time.now.utc payload = { key: key, cron: cron, enabled: enabled, source: source, metadata: JSON.generate( || {}), created_at: existing ? existing[:created_at] : now, updated_at: now, disabled_at: PersistenceHelpers.disabled_at_for(existing, enabled, now) } if existing rows.update(payload) else dataset.insert(payload) end find_definition(key) end |