Module: Legion::Extensions::Lex::Runners::Runner

Includes:
Helpers::Lex
Defined in:
lib/legion/extensions/lex/runners/runner.rb

Overview

rubocop:disable Legion/Extension/RunnerPluralModule

Instance Method Summary collapse

Instance Method Details

#create(extension_id:, name:, active: true, **opts) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/legion/extensions/lex/runners/runner.rb', line 10

def create(extension_id:, name:, active: true, **opts)
  existing = find_cached_runner(name, extension_id)
  return update(runner_id: existing.values[:id], name: name, active: active, **opts) if existing # rubocop:disable Legion/Extension/RunnerReturnHash

  insert = {
    extension_id: extension_id,
    name:         name.to_s,
    active:       active,
    namespace:    opts[:namespace]
  }
  insert[:queue] = opts.fetch(:queue, name.to_s)
  insert[:uri] = opts.fetch(:uri, name.to_s)
  id = Legion::Data::Model::Runner.insert(insert)
  reload_static_caches
  { success: true, runner_id: id }
end

#delete(runner_id:, **_opts) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/legion/extensions/lex/runners/runner.rb', line 53

def delete(runner_id:, **_opts)
  record = Legion::Data::Model::Runner[runner_id]
  return { success: false, reason: 'not found' } if record.nil?

  record.delete
  reload_static_caches
  { success: true, runner_id: runner_id }
end

#get(runner_id:, **_opts) ⇒ Object



46
47
48
49
50
51
# File 'lib/legion/extensions/lex/runners/runner.rb', line 46

def get(runner_id:, **_opts)
  record = Legion::Data::Model::Runner[runner_id]
  return { success: false, reason: 'not found' } if record.nil?

  { success: true, values: record.values }
end

#update(runner_id:, **opts) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/legion/extensions/lex/runners/runner.rb', line 27

def update(runner_id:, **opts)
  runner = Legion::Data::Model::Runner[runner_id]
  return { success: false, reason: 'runner not found' } if runner.nil?

  changes = {}
  %i[name namespace active queue uri].each do |column|
    next unless opts.key?(column)
    next if runner.values[column] == opts[column]

    changes[column] = opts[column]
  end

  return { success: true, changed: false, runner_id: runner_id } if changes.empty?

  runner.update(changes)
  reload_static_caches
  { success: true, changed: true, updates: changes, runner_id: runner_id }
end