Class: Arango::Task
- Inherits:
-
Object
- Object
- Arango::Task
- Defined in:
- lib/arango/task.rb
Overview
Arango Task
Instance Attribute Summary collapse
-
#command ⇒ String
(also: #javascript_command)
Access the javascript code of the task.
-
#created ⇒ Object
readonly
Time this task has been created at, timestamp.
-
#database ⇒ Object
readonly
Database the task belongs to return [Arango::Database] or nil.
-
#id ⇒ String
The Task id.
-
#name ⇒ String
The Task name.
-
#offset ⇒ Integer
The number of seconds initial delay.
-
#params ⇒ Object
Hash of params to pass to the command # @return [Hash] or nil.
-
#period ⇒ Integer
Number of seconds between executions.
-
#server ⇒ Object
readonly
Server the Task belongs to.
-
#type ⇒ Object
readonly
Task type.
Class Method Summary collapse
-
.all(database: nil, server: Arango.current_server) ⇒ Array<Arango::Task>
Get all tasks from a server or from a database.
-
.delete(id:, database: nil, server: Arango.current_server) ⇒ Arango::Task
Delete a task from the server or from a database.
- .exists?(id:, database: nil, server: Arango.current_server) ⇒ Boolean
-
.from_h(task_hash, server: nil) ⇒ Arango::Task
Takes a hash and instantiates a Arango::Task object from it.
-
.from_result(arango_result, server: nil) ⇒ Arango::Task
Takes a Arango::Result and instantiates a Arango::Task object from it.
-
.get(id:, database: nil, server: Arango.current_server) ⇒ Arango::Task
Gets a task from the server or from a database.
-
.list(database: nil, server: Arango.current_server) ⇒ Array<String>
List all tasks ids from a server or from a database.
Instance Method Summary collapse
-
#create ⇒ Object
Create the task in the database.
-
#delete ⇒ Object
Delete the task from the database.
-
#initialize(id: nil, command: nil, name: nil, offset: nil, params: nil, period: nil, database: nil, server: Arango.current_server) ⇒ Arango::Task
constructor
Instantiate a new task.
-
#set_id(id) ⇒ Object
set id.
-
#to_h ⇒ Hash
Convert the Task to a Hash.
Methods included from Helper::Satisfaction
#satisfy_category?, #satisfy_class?, #satisfy_class_or_string?, #satisfy_module?, #satisfy_module_or_nil?, #satisfy_module_or_string?, #warning_deprecated
Constructor Details
#initialize(id: nil, command: nil, name: nil, offset: nil, params: nil, period: nil, database: nil, server: Arango.current_server) ⇒ Arango::Task
Instantiate a new task.
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/arango/task.rb', line 160 def initialize(id: nil, command: nil, name: nil, offset: nil, params: nil, period: nil, database: nil, server: Arango.current_server) @args = Hash.new if database assign_database(database) @requester = @database @args[:db] = @database.name elsif server assign_server(server) @requester = @server end set_id id @command = command @name = name @offset = offset @params = params @period = period end |
Instance Attribute Details
#command ⇒ String Also known as: javascript_command
Access the javascript code of the task.
112 113 114 |
# File 'lib/arango/task.rb', line 112 def command @command end |
#created ⇒ Object (readonly)
Time this task has been created at, timestamp. return [BigDecimal]
138 139 140 |
# File 'lib/arango/task.rb', line 138 def created @created end |
#database ⇒ Object (readonly)
Database the task belongs to return [Arango::Database] or nil
142 143 144 |
# File 'lib/arango/task.rb', line 142 def database @database end |
#id ⇒ String
The Task id.
118 119 120 |
# File 'lib/arango/task.rb', line 118 def id @id end |
#name ⇒ String
The Task name.
122 123 124 |
# File 'lib/arango/task.rb', line 122 def name @name end |
#offset ⇒ Integer
The number of seconds initial delay.
126 127 128 |
# File 'lib/arango/task.rb', line 126 def offset @offset end |
#params ⇒ Object
Hash of params to pass to the command # @return [Hash] or nil
130 131 132 |
# File 'lib/arango/task.rb', line 130 def params @params end |
#period ⇒ Integer
Number of seconds between executions.
134 135 136 |
# File 'lib/arango/task.rb', line 134 def period @period end |
#server ⇒ Object (readonly)
Server the Task belongs to. return [Arango::Server]
146 147 148 |
# File 'lib/arango/task.rb', line 146 def server @server end |
#type ⇒ Object (readonly)
Task type. return [Symbol] Either :periodic or :timed.
150 151 152 |
# File 'lib/arango/task.rb', line 150 def type @type end |
Class Method Details
.all(database: nil, server: Arango.current_server) ⇒ Array<Arango::Task>
Get all tasks from a server or from a database
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/arango/task.rb', line 78 def all(database: nil, server: Arango.current_server) args = Hash.new if database args[:db] = database.name server = database.server end result = Arango::Requests::Task::All.execute(server: server, args: args) result.map { |task| Arango::Task.from_h(task, server: server) } end |
.delete(id:, database: nil, server: Arango.current_server) ⇒ Arango::Task
Delete a task from the server or from a database.
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/arango/task.rb', line 46 def delete(id:, database: nil, server: Arango.current_server) args = {id: id} if database args[:db] = database.name Arango::Requests::Task::Delete.execute(server: database.server, args: args) elsif server Arango::Requests::Task::Delete.execute(server: server, args: args) end self end |
.exists?(id:, database: nil, server: Arango.current_server) ⇒ Boolean
104 105 106 107 |
# File 'lib/arango/task.rb', line 104 def exists?(id:, database: nil, server: Arango.current_server) result = list(database: database, server: server) result.include?(id) end |
.from_h(task_hash, server: nil) ⇒ Arango::Task
Takes a hash and instantiates a Arango::Task object from it.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/arango/task.rb', line 15 def from_h(task_hash, server: nil) raise Arango::Error.new(err: :no_task_id) unless task_hash.key?(:id) task_hash = task_hash.transform_keys { |k| k.to_s.underscore.to_sym } task_hash.merge!(server: server) if server if task_hash[:database].class == String task_hash[:database] = Arango::Database.new(name: task_hash[:database], server: server) end created = task_hash.delete(:created) offset = task_hash.delete(:offset) type = task_hash.delete(:type) task = Arango::Task.new(**task_hash) task.instance_variable_set(:@created, created) task.instance_variable_set(:@offset, offset) task.instance_variable_set(:@type, type) task end |
.from_result(arango_result, server: nil) ⇒ Arango::Task
Takes a Arango::Result and instantiates a Arango::Task object from it.
36 37 38 |
# File 'lib/arango/task.rb', line 36 def from_result(arango_result, server: nil) from_h(arango_result.to_h, server: server) end |
.get(id:, database: nil, server: Arango.current_server) ⇒ Arango::Task
Gets a task from the server or from a database.
63 64 65 66 67 68 69 70 71 |
# File 'lib/arango/task.rb', line 63 def get(id:, database: nil, server: Arango.current_server) args = { id: id } if database args[:db] = database.name server = database.server end result = Arango::Requests::Task::Get.execute(server: server, args: args) Arango::Task.from_result(result, server: server) end |
.list(database: nil, server: Arango.current_server) ⇒ Array<String>
List all tasks ids from a server or from a database
94 95 96 97 98 99 100 101 102 |
# File 'lib/arango/task.rb', line 94 def list(database: nil, server: Arango.current_server) args = Hash.new if database args[:db] = database.name server = database.server end result = Arango::Requests::Task::All.execute(server: server, args: args) result.map { |task| task[:id] } end |
Instance Method Details
#create ⇒ Object
Create the task in the database. return [Arango::Task] Returns the task.
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/arango/task.rb', line 206 def create body = { name: @name, command: @command, period: @period, offset: @offset, params: @params } if @id result = Arango::Requests::Task::CreateWithId.execute(server: @requester, args: @args, body: body) else result = Arango::Requests::Task::Create.execute(server: @requester, args: @args, body: body) set_id result.id end @type = result.type.to_sym @created = result.created @name = result.name self end |
#delete ⇒ Object
Delete the task from the database. return nil.
228 229 230 231 |
# File 'lib/arango/task.rb', line 228 def delete Arango::Requests::Task::Delete.execute(server: @requester, args: @args) nil end |
#set_id(id) ⇒ Object
set id
179 180 181 182 183 184 185 186 |
# File 'lib/arango/task.rb', line 179 def set_id id @id = id if @id @args[:id] = @id else @args.delete :id end end |
#to_h ⇒ Hash
Convert the Task to a Hash
190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/arango/task.rb', line 190 def to_h { id: @id, name: @name, type: @type, period: @period, command: @command, params: @params, created: @created, cache_name: @cache_name, database: @database ? @database.name : nil }.delete_if{|_,v| v.nil?} end |