Class: Textus::Handlers::Write::EnqueueJob
- Inherits:
-
Object
- Object
- Textus::Handlers::Write::EnqueueJob
- Defined in:
- lib/textus/handlers/write/enqueue_job.rb
Instance Method Summary collapse
- #call(command, call) ⇒ Object
-
#initialize(job_store:) ⇒ EnqueueJob
constructor
A new instance of EnqueueJob.
Constructor Details
#initialize(job_store:) ⇒ EnqueueJob
Returns a new instance of EnqueueJob.
5 6 7 |
# File 'lib/textus/handlers/write/enqueue_job.rb', line 5 def initialize(job_store:) @job_store = job_store end |
Instance Method Details
#call(command, call) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/textus/handlers/write/enqueue_job.rb', line 9 def call(command, call) action_class = Textus::Jobs.fetch(command.type.to_s) if action_class.const_defined?(:REQUIRED_ROLE) && call.role != action_class::REQUIRED_ROLE return Value::Result.failure(:forbidden, "role '#{call.role}' is not authorized to enqueue this job type", details: { "role" => call.role, "required_role" => action_class::REQUIRED_ROLE }) end job = Textus::Store::Jobs::Queue::Job.new(type: command.type, args: command.args, role: call.role, max_attempts: 3) Textus::Store::Jobs::Queue.new(store: @job_store).enqueue(job) Value::Result.success("protocol" => Textus::PROTOCOL, "ok" => true, "id" => job.id) rescue Textus::UsageError Value::Result.failure(:usage_error, "unregistered job type '#{command.type}'") end |