Module: Legion::Extensions::Lex::Runners::Extension
- Includes:
- Helpers::Lex
- Defined in:
- lib/legion/extensions/lex/runners/extension.rb
Instance Method Summary collapse
- #create(name:, namespace:, active: true, **opts) ⇒ Object
- #delete(extension_id:, **_opts) ⇒ Object
- #get(extension_id: nil, name: nil, namespace: nil, **_opts) ⇒ Object
- #update(extension_id:, **opts) ⇒ Object
Instance Method Details
#create(name:, namespace:, active: true, **opts) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/legion/extensions/lex/runners/extension.rb', line 10 def create(name:, namespace:, active: true, **opts) existing = find_cached_extension(name) return update(extension_id: existing.values[:id], namespace: namespace, active: active, **opts) if existing # rubocop:disable Legion/Extension/RunnerReturnHash insert = { name: name, namespace: namespace, active: active } insert[:exchange] = opts.fetch(:exchange, name) insert[:uri] = opts.fetch(:uri, name) id = Legion::Data::Model::Extension.insert(insert) reload_static_caches { success: true, extension_id: id } end |
#delete(extension_id:, **_opts) ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/legion/extensions/lex/runners/extension.rb', line 52 def delete(extension_id:, **_opts) record = Legion::Data::Model::Extension[extension_id] return { success: false, reason: 'not found' } if record.nil? record.delete reload_static_caches { success: true, extension_id: extension_id } end |
#get(extension_id: nil, name: nil, namespace: nil, **_opts) ⇒ Object
41 42 43 44 45 46 47 48 49 50 |
# File 'lib/legion/extensions/lex/runners/extension.rb', line 41 def get(extension_id: nil, name: nil, namespace: nil, **_opts) dataset = Legion::Data::Model::Extension dataset = dataset.where(id: extension_id) if extension_id dataset = dataset.where(name: name) if name dataset = dataset.where(namespace: namespace) if namespace record = dataset.first return { success: false, reason: 'not found' } if record.nil? { success: true, values: record.values } end |
#update(extension_id:, **opts) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/legion/extensions/lex/runners/extension.rb', line 22 def update(extension_id:, **opts) extension = Legion::Data::Model::Extension[extension_id] return { success: false, reason: 'extension not found' } if extension.nil? changes = {} %i[name namespace active exchange uri].each do |column| next unless opts.key?(column) next if extension.values[column] == opts[column] changes[column] = opts[column] end return { success: true, changed: false, extension_id: extension_id } if changes.empty? extension.update(changes) reload_static_caches { success: true, changed: true, updates: changes, extension_id: extension_id } end |