10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/legion/extensions/lex/runners/sync.rb', line 10
def sync(**_opts)
return { success: false, reason: 'legion-data not connected' } unless Legion::Settings[:data][:connected]
extensions = Legion::Extensions.instance_variable_get(:@extensions) || {}
loaded = Legion::Extensions.instance_variable_get(:@loaded_extensions) || []
synced = 0
created = 0
updated = 0
loaded.each do |ext_name|
values = extensions[ext_name]
next if values.nil?
existing = Legion::Data::Model::Extension.where(name: ext_name).first
if existing.nil?
Legion::Data::Model::Extension.insert(
name: ext_name,
namespace: values[:extension_class].to_s,
active: true,
exchange: ext_name,
uri: ext_name
)
created += 1
else
ns = values[:extension_class].to_s
if existing.values[:namespace] != ns
existing.update(namespace: ns)
updated += 1
end
end
synced += 1
end
{ success: true, synced: synced, created: created, updated: updated }
rescue StandardError => e
{ success: false, error: e.message }
end
|