lex-tasker 0.3.0 → 0.3.1
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/CHANGELOG.md +10 -0
- data/CLAUDE.md +2 -3
- data/Gemfile +7 -0
- data/README.md +11 -0
- data/lex-tasker.gemspec +8 -0
- data/lib/legion/extensions/tasker/helpers/task_finder.rb +6 -6
- data/lib/legion/extensions/tasker/runners/check_subtask.rb +1 -1
- data/lib/legion/extensions/tasker/version.rb +1 -1
- metadata +100 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 218b771f64b66eb92d7f283cb4af0fadb236a6c227fa6ed47bd627f3ae34e212
|
|
4
|
+
data.tar.gz: 4826a7dab95f1c7957e2d32776e345427a3e14e98c9937b97d9371b4baebba9e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dd844e94dfd2f2afac80bf29aaaa2865044f6de34d3b7b63fb177a98ac96ee4e1e81b252f97980bf5fc820463f214ab43743b0b1b023795af38c50d85b59ffa0
|
|
7
|
+
data.tar.gz: 8a41a9c9c67495a655f64a21247fd02f06be9c3071ce4e992aaa5770c2703f495f1696159f4b6ffb7589a85a9ad517f591797bfd360bb1c8195070cdb1e926d1
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.1] - 2026-03-22
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Add legion-cache, legion-crypt, legion-data, legion-json, legion-logging, legion-settings, legion-transport as runtime dependencies
|
|
7
|
+
- Replace direct Legion::Cache.get/set calls with cache_get/cache_set helper methods in Helpers::TaskFinder
|
|
8
|
+
- Replace direct Legion::JSON.dump call with json_dump helper in Runners::CheckSubtask
|
|
9
|
+
- Update spec_helper with real sub-gem helper stubs and actor base class includes
|
|
10
|
+
- Update specs to stub cache_get/cache_set on instance instead of Legion::Cache class methods
|
|
11
|
+
- Update transport queue specs to use allocate instead of new to bypass real Transport::Queue initialize
|
|
12
|
+
|
|
3
13
|
## [0.3.0] - 2026-03-18
|
|
4
14
|
|
|
5
15
|
### Added
|
data/CLAUDE.md
CHANGED
|
@@ -30,9 +30,8 @@ Legion::Extensions::Tasker
|
|
|
30
30
|
│ ├── Updater # update_status: update task columns in DB
|
|
31
31
|
│ └── Log # add_log, delete_log, delete_task_logs, delete_node_logs, delete_all
|
|
32
32
|
├── Helpers/
|
|
33
|
-
│
|
|
34
|
-
|
|
35
|
-
│ └── FindSubtask # Subtask relationship lookup helpers
|
|
33
|
+
│ └── TaskFinder # Subtask relationship lookup and task dispatch helpers
|
|
34
|
+
├── Client # Standalone client including TaskFinder helper; accepts injected data_model
|
|
36
35
|
└── Transport/
|
|
37
36
|
├── Exchanges/Task # Task exchange
|
|
38
37
|
├── Queues/
|
data/Gemfile
CHANGED
|
@@ -6,6 +6,13 @@ gemspec
|
|
|
6
6
|
|
|
7
7
|
gem 'bundler', '>= 2'
|
|
8
8
|
gem 'codecov'
|
|
9
|
+
gem 'legion-cache', '>= 1.3.11'
|
|
10
|
+
gem 'legion-crypt', '>= 1.4.9'
|
|
11
|
+
gem 'legion-data', '>= 1.4.17'
|
|
12
|
+
gem 'legion-json', '>= 1.2.1'
|
|
13
|
+
gem 'legion-logging', '>= 1.3.2'
|
|
14
|
+
gem 'legion-settings', '>= 1.3.14'
|
|
15
|
+
gem 'legion-transport', '>= 1.3.9'
|
|
9
16
|
gem 'rake'
|
|
10
17
|
gem 'rspec'
|
|
11
18
|
gem 'rspec_junit_formatter'
|
data/README.md
CHANGED
|
@@ -24,6 +24,17 @@ When a task completes, its runner calls `check_subtasks` via the task exchange.
|
|
|
24
24
|
|
|
25
25
|
Delayed tasks (those with `relationship_delay` or `task_delay`) are stored in the database with status `task.delayed` and dispatched by the `FetchDelayed` runner once their delay period has elapsed.
|
|
26
26
|
|
|
27
|
+
## Standalone Client
|
|
28
|
+
|
|
29
|
+
`Legion::Extensions::Tasker::Client` provides access to the `TaskFinder` helper for programmatic task lookup:
|
|
30
|
+
|
|
31
|
+
```ruby
|
|
32
|
+
require 'legion/extensions/tasker/client'
|
|
33
|
+
client = Legion::Extensions::Tasker::Client.new
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Accepts an optional `data_model:` kwarg to inject a mock data model for testing.
|
|
37
|
+
|
|
27
38
|
## Requirements
|
|
28
39
|
|
|
29
40
|
- Ruby >= 3.4
|
data/lex-tasker.gemspec
CHANGED
|
@@ -26,4 +26,12 @@ Gem::Specification.new do |spec|
|
|
|
26
26
|
spec.metadata['bug_tracker_uri'] = 'https://github.com/LegionIO/lex-tasker/issues'
|
|
27
27
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
28
28
|
spec.require_paths = ['lib']
|
|
29
|
+
|
|
30
|
+
spec.add_dependency 'legion-cache', '>= 1.3.11'
|
|
31
|
+
spec.add_dependency 'legion-crypt', '>= 1.4.9'
|
|
32
|
+
spec.add_dependency 'legion-data', '>= 1.4.17'
|
|
33
|
+
spec.add_dependency 'legion-json', '>= 1.2.1'
|
|
34
|
+
spec.add_dependency 'legion-logging', '>= 1.3.2'
|
|
35
|
+
spec.add_dependency 'legion-settings', '>= 1.3.14'
|
|
36
|
+
spec.add_dependency 'legion-transport', '>= 1.3.9'
|
|
29
37
|
end
|
|
@@ -6,8 +6,8 @@ module Legion
|
|
|
6
6
|
module Helpers
|
|
7
7
|
module TaskFinder
|
|
8
8
|
def find_trigger(runner_class:, function:, **)
|
|
9
|
-
cache_key = "
|
|
10
|
-
cached =
|
|
9
|
+
cache_key = "find_trigger:#{runner_class}:#{function}"
|
|
10
|
+
cached = cache_get(cache_key)
|
|
11
11
|
return cached unless cached.nil?
|
|
12
12
|
|
|
13
13
|
result = Legion::Data::Model::Function
|
|
@@ -19,13 +19,13 @@ module Legion
|
|
|
19
19
|
Sequel[:runners][:namespace])
|
|
20
20
|
.first
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
cache_set(cache_key, result) if result
|
|
23
23
|
result
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def find_subtasks(trigger_id:, **)
|
|
27
|
-
cache_key = "
|
|
28
|
-
cached =
|
|
27
|
+
cache_key = "find_subtasks:#{trigger_id}"
|
|
28
|
+
cached = cache_get(cache_key)
|
|
29
29
|
return cached unless cached.nil?
|
|
30
30
|
|
|
31
31
|
results = subtask_query(trigger_id).all.map do |row|
|
|
@@ -33,7 +33,7 @@ module Legion
|
|
|
33
33
|
row
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
cache_set(cache_key, results, ttl: 5) if results.is_a?(Array) && results.any?
|
|
37
37
|
results
|
|
38
38
|
end
|
|
39
39
|
|
|
@@ -99,7 +99,7 @@ module Legion
|
|
|
99
99
|
insert_hash = { relationship_id: relationship_id, function_id: function_id, status: status }
|
|
100
100
|
insert_hash[:master_id] = master_id.is_a?(Integer) ? master_id : (parent_id if parent_id.is_a?(Integer))
|
|
101
101
|
insert_hash[:parent_id] = parent_id if parent_id.is_a?(Integer)
|
|
102
|
-
insert_hash[:payload] =
|
|
102
|
+
insert_hash[:payload] = json_dump(opts)
|
|
103
103
|
Legion::Data::Model::Task.insert(insert_hash)
|
|
104
104
|
end
|
|
105
105
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,112 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-tasker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: legion-cache
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 1.3.11
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 1.3.11
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: legion-crypt
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 1.4.9
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 1.4.9
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: legion-data
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 1.4.17
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 1.4.17
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: legion-json
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: 1.2.1
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: 1.2.1
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: legion-logging
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 1.3.2
|
|
75
|
+
type: :runtime
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 1.3.2
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: legion-settings
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 1.3.14
|
|
89
|
+
type: :runtime
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: 1.3.14
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: legion-transport
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: 1.3.9
|
|
103
|
+
type: :runtime
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - ">="
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: 1.3.9
|
|
12
110
|
description: This LEX keeps track of tasks and their status
|
|
13
111
|
email:
|
|
14
112
|
- matthewdiverson@gmail.com
|