Module: Legion::Registry::Persistence
- Defined in:
- lib/legion/registry/persistence.rb
Class Method Summary collapse
Class Method Details
.data_available? ⇒ Boolean
7 8 9 10 11 12 13 14 15 |
# File 'lib/legion/registry/persistence.rb', line 7 def data_available? return false unless defined?(Legion::Data) return false unless Legion::Data.respond_to?(:connection) && Legion::Data.connection Legion::Data.connection.table_exists?(:extensions_registry) rescue StandardError => e Legion::Logging.debug "Registry::Persistence#data_available? check failed: #{e.}" if defined?(Legion::Logging) false end |
.load_from_db ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/legion/registry/persistence.rb', line 17 def load_from_db return 0 unless data_available? count = 0 registry_dataset.each do |row| entry = Entry.new( name: row[:name], version: row[:version], author: row[:author], description: row[:description], status: row[:status]&.to_sym, airb_status: row[:airb_status], risk_tier: row[:risk_tier] ) Legion::Registry.register(entry) count += 1 end count end |
.persist(entry) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/legion/registry/persistence.rb', line 37 def persist(entry) return false unless data_available? attrs = persistence_attrs(entry) existing = registry_dataset.where(name: entry.name).first if existing registry_dataset.where(name: entry.name).update(**attrs, updated_at: Time.now) else registry_dataset.insert(**attrs, created_at: Time.now, updated_at: Time.now) end true rescue StandardError => e Legion::Logging.warn("Registry::Persistence failed to persist #{entry.name}: #{e.}") if defined?(Legion::Logging) false end |