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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ddb16f43ef1fb3c1ac2861f9c76e02d2b45cede2dbe9eb39029916a5ee70fb7
4
- data.tar.gz: ca05b76ba9b441705bb70c182adcc442c36dea6aea02e5d477db0d872afb282d
3
+ metadata.gz: 218b771f64b66eb92d7f283cb4af0fadb236a6c227fa6ed47bd627f3ae34e212
4
+ data.tar.gz: 4826a7dab95f1c7957e2d32776e345427a3e14e98c9937b97d9371b4baebba9e
5
5
  SHA512:
6
- metadata.gz: 8f66556dfc6fdf24c90c688641a477d40b0d31ceb702903e7946bb6d5e0d5ecc8c6a49f3570f600a491b95c32552b75c919f88047d9462327b8ffa4f12bcbbd0
7
- data.tar.gz: 34f3bc487e7ecb93f54f86139d055249560d0abd0563646a2656f73ac84026754a3f79afb3ab562778cecd72ffb02c7397338a079dfc5870e5486b2022c42989
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
- ├── Base # Shared helper utilities
34
- ├── FetchDelayed # Delayed task query helpers
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 = "tasker:find_trigger:#{runner_class}:#{function}"
10
- cached = Legion::Cache.get(cache_key)
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
- Legion::Cache.set(cache_key, result) if result
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 = "tasker:find_subtasks:#{trigger_id}"
28
- cached = Legion::Cache.get(cache_key)
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
- Legion::Cache.set(cache_key, results, 5) if results.is_a?(Array) && results.any?
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] = Legion::JSON.dump(opts)
102
+ insert_hash[:payload] = json_dump(opts)
103
103
  Legion::Data::Model::Task.insert(insert_hash)
104
104
  end
105
105
  end
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Tasker
6
- VERSION = '0.3.0'
6
+ VERSION = '0.3.1'
7
7
  end
8
8
  end
9
9
  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.0
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