lex-tasker 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +16 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +36 -22
- data/CHANGELOG.md +43 -0
- data/CLAUDE.md +83 -0
- data/Dockerfile +1 -1
- data/Gemfile +9 -1
- data/README.md +34 -2
- data/Rakefile +2 -0
- data/docker_deploy.rb +1 -0
- data/lex-tasker.gemspec +9 -13
- data/lib/legion/extensions/tasker/actors/check_subtask.rb +20 -14
- data/lib/legion/extensions/tasker/actors/fetch_delayed.rb +23 -17
- data/lib/legion/extensions/tasker/actors/fetch_delayed_push.rb +26 -20
- data/lib/legion/extensions/tasker/actors/log.rb +14 -8
- data/lib/legion/extensions/tasker/actors/task_manager.rb +20 -14
- data/lib/legion/extensions/tasker/actors/updater.rb +20 -14
- data/lib/legion/extensions/tasker/client.rb +29 -0
- data/lib/legion/extensions/tasker/helpers/task_finder.rb +98 -0
- data/lib/legion/extensions/tasker/runners/check_subtask.rb +92 -80
- data/lib/legion/extensions/tasker/runners/fetch_delayed.rb +76 -60
- data/lib/legion/extensions/tasker/runners/log.rb +47 -41
- data/lib/legion/extensions/tasker/runners/task_manager.rb +12 -5
- data/lib/legion/extensions/tasker/runners/updater.rb +25 -22
- data/lib/legion/extensions/tasker/transport/exchanges/task.rb +10 -4
- data/lib/legion/extensions/tasker/transport/messages/fetch_delayed.rb +17 -7
- data/lib/legion/extensions/tasker/transport/queues/check_subtask.rb +18 -12
- data/lib/legion/extensions/tasker/transport/queues/fetch_delayed.rb +20 -15
- data/lib/legion/extensions/tasker/transport/queues/lex_register.rb +15 -9
- data/lib/legion/extensions/tasker/transport/queues/subtask.rb +12 -6
- data/lib/legion/extensions/tasker/transport/queues/task_log.rb +12 -6
- data/lib/legion/extensions/tasker/transport/queues/task_mananger.rb +15 -9
- data/lib/legion/extensions/tasker/transport/queues/updater.rb +12 -6
- data/lib/legion/extensions/tasker/transport.rb +31 -24
- data/lib/legion/extensions/tasker/version.rb +3 -1
- data/lib/legion/extensions/tasker.rb +2 -4
- metadata +17 -104
- data/.circleci/config.yml +0 -39
- data/Gemfile.lock +0 -69
- data/bitbucket-pipelines.yml +0 -19
- data/lib/legion/extensions/tasker/helpers/base.rb +0 -11
- data/lib/legion/extensions/tasker/helpers/fetch_delayed.rb +0 -66
- data/lib/legion/extensions/tasker/helpers/find_subtask.rb +0 -49
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
module Legion
|
|
2
|
-
module Extensions
|
|
3
|
-
module Tasker
|
|
4
|
-
module Helpers
|
|
5
|
-
module FetchDelayed
|
|
6
|
-
def find_trigger(runner_class:, function:, **)
|
|
7
|
-
sql = "SELECT `functions`.`id` as `function_id`, `runner_id`, `runners`.`namespace`
|
|
8
|
-
FROM `legion`.`functions`
|
|
9
|
-
INNER JOIN `legion`.`runners` ON (`functions`.`runner_id` = `runners`.`id`)
|
|
10
|
-
WHERE `functions`.`name` = '#{function}'
|
|
11
|
-
AND `runners`.`namespace` = '#{runner_class}' LIMIT 1;"
|
|
12
|
-
|
|
13
|
-
cache = Legion::Cache.get(sql)
|
|
14
|
-
return cache unless cache.nil?
|
|
15
|
-
|
|
16
|
-
results = Legion::Data::Connection.sequel.fetch(sql).first
|
|
17
|
-
Legion::Cache.set(sql, results) if results.is_a?(Hash) && results.count.positive?
|
|
18
|
-
results
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def find_delayed(**)
|
|
22
|
-
sql = '
|
|
23
|
-
SELECT tasks.id, tasks.relationship_id, tasks.function_id, tasks.created,
|
|
24
|
-
relationships.delay as relationship_delay, relationships.chain_id,
|
|
25
|
-
functions.name as function_name,
|
|
26
|
-
runners.namespace as class, runners.id as runner_id,
|
|
27
|
-
CONCAT( `exchange`, ".",`queue`,".",`functions`.`name`) AS runner_routing_key
|
|
28
|
-
FROM legion.tasks
|
|
29
|
-
INNER JOIN legion.functions ON (functions.id = tasks.function_id)
|
|
30
|
-
INNER JOIN legion.runners ON (runners.id = functions.runner_id)
|
|
31
|
-
INNER JOIN `legion`.`extensions` ON (`runners`.`extension_id` = `extensions`.`id`)
|
|
32
|
-
LEFT JOIN legion.relationships ON (relationships.id = tasks.relationship_id)
|
|
33
|
-
WHERE status = \'task.delayed\';'
|
|
34
|
-
|
|
35
|
-
Legion::Data::Connection.sequel.fetch(sql).all
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def find_subtasks(trigger_id:, **)
|
|
39
|
-
sql = "
|
|
40
|
-
SELECT
|
|
41
|
-
`relationships`.`id` as `relationship_id`, `debug`,
|
|
42
|
-
`chain_id`, `allow_new_chains`, `delay`, `trigger_id`, `action_id`, `conditions`, `transformation`,
|
|
43
|
-
`runners`.`namespace`, `runners`.`id` as `runner_id`, `runners`.`queue`,
|
|
44
|
-
`runners`.`namespace` as runner_class,
|
|
45
|
-
`functions`.`id` as `function_id`, `functions`.`name` as `function`,
|
|
46
|
-
`extensions`.`exchange`,
|
|
47
|
-
CONCAT( `exchange`, '.',`queue`,'.',`functions`.`name`) AS runner_routing_key
|
|
48
|
-
FROM `legion`.`relationships`
|
|
49
|
-
INNER JOIN `legion`.`functions` ON (`functions`.`id` = `relationships`.`action_id`)
|
|
50
|
-
INNER JOIN `legion`.`runners` ON (`functions`.`runner_id` = `runners`.`id`)
|
|
51
|
-
INNER JOIN `legion`.`extensions` ON (`runners`.`extension_id` = `extensions`.`id`)
|
|
52
|
-
WHERE `relationships`.`trigger_id` = #{trigger_id} AND `relationships`.`active` = 1;
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
cache = Legion::Cache.get(sql)
|
|
56
|
-
return cache unless cache.nil?
|
|
57
|
-
|
|
58
|
-
results = Legion::Data::Connection.sequel.fetch(sql).all
|
|
59
|
-
Legion::Cache.set(sql, results, 5) if results.is_a?(Array) && results.count.positive?
|
|
60
|
-
results
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
module Legion
|
|
2
|
-
module Extensions
|
|
3
|
-
module Tasker
|
|
4
|
-
module Helpers
|
|
5
|
-
module FindSubtask
|
|
6
|
-
def find_trigger(runner_class:, function:, **)
|
|
7
|
-
sql = "SELECT `functions`.`id` as `function_id`, `runner_id`, `runners`.`namespace`
|
|
8
|
-
FROM `legion`.`functions`
|
|
9
|
-
INNER JOIN `legion`.`runners` ON (`functions`.`runner_id` = `runners`.`id`)
|
|
10
|
-
WHERE `functions`.`name` = '#{function}'
|
|
11
|
-
AND `runners`.`namespace` = '#{runner_class}' LIMIT 1;"
|
|
12
|
-
|
|
13
|
-
cache = Legion::Cache.get(sql)
|
|
14
|
-
return cache unless cache.nil?
|
|
15
|
-
|
|
16
|
-
results = Legion::Data::Connection.sequel.fetch(sql).first
|
|
17
|
-
Legion::Cache.set(sql, results) if results.is_a?(Hash) && results.count.positive?
|
|
18
|
-
results
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def find_subtasks(trigger_id:, **)
|
|
22
|
-
sql = "
|
|
23
|
-
SELECT
|
|
24
|
-
`relationships`.`id` as `relationship_id`, `debug`,
|
|
25
|
-
`chain_id`, `allow_new_chains`, `delay`, `trigger_id`, `action_id`, `conditions`, `transformation`,
|
|
26
|
-
`runners`.`namespace`, `runners`.`id` as `runner_id`, `runners`.`queue`,
|
|
27
|
-
`runners`.`namespace` as runner_class,
|
|
28
|
-
`functions`.`id` as `function_id`, `functions`.`name` as `function`,
|
|
29
|
-
`extensions`.`exchange`,
|
|
30
|
-
CONCAT( `exchange`, '.',`queue`,'.',`functions`.`name`) AS runner_routing_key
|
|
31
|
-
FROM `legion`.`relationships`
|
|
32
|
-
INNER JOIN `legion`.`functions` ON (`functions`.`id` = `relationships`.`action_id`)
|
|
33
|
-
INNER JOIN `legion`.`runners` ON (`functions`.`runner_id` = `runners`.`id`)
|
|
34
|
-
INNER JOIN `legion`.`extensions` ON (`runners`.`extension_id` = `extensions`.`id`)
|
|
35
|
-
WHERE `relationships`.`trigger_id` = #{trigger_id} AND `relationships`.`active` = 1;
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
cache = Legion::Cache.get(sql)
|
|
39
|
-
return cache unless cache.nil?
|
|
40
|
-
|
|
41
|
-
results = Legion::Data::Connection.sequel.fetch(sql).all
|
|
42
|
-
Legion::Cache.set(sql, results, 5) if results.is_a?(Array) && results.count.positive?
|
|
43
|
-
results
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|