Class: Arango::Task
- Inherits:
-
Object
- Object
- Arango::Task
- Defined in:
- lib/arango/task.rb
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.
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/arango/task.rb', line 159 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.
111 112 113 |
# File 'lib/arango/task.rb', line 111 def command @command end |
#created ⇒ Object (readonly)
Time this task has been created at, timestamp. return [BigDecimal]
137 138 139 |
# File 'lib/arango/task.rb', line 137 def created @created end |
#database ⇒ Object (readonly)
Database the task belongs to return [Arango::Database] or nil
141 142 143 |
# File 'lib/arango/task.rb', line 141 def database @database end |
#id ⇒ String
The Task id.
117 118 119 |
# File 'lib/arango/task.rb', line 117 def id @id end |
#name ⇒ String
The Task name.
121 122 123 |
# File 'lib/arango/task.rb', line 121 def name @name end |
#offset ⇒ Integer
The number of seconds initial delay.
125 126 127 |
# File 'lib/arango/task.rb', line 125 def offset @offset end |
#params ⇒ Object
Hash of params to pass to the command # @return [Hash] or nil
129 130 131 |
# File 'lib/arango/task.rb', line 129 def params @params end |
#period ⇒ Integer
Number of seconds between executions.
133 134 135 |
# File 'lib/arango/task.rb', line 133 def period @period end |
#server ⇒ Object (readonly)
Server the Task belongs to. return [Arango::Server]
145 146 147 |
# File 'lib/arango/task.rb', line 145 def server @server end |
#type ⇒ Object (readonly)
Task type. return [Symbol] Either :periodic or :timed.
149 150 151 |
# File 'lib/arango/task.rb', line 149 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
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/arango/task.rb', line 77 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.
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/arango/task.rb', line 45 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
103 104 105 106 |
# File 'lib/arango/task.rb', line 103 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.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/arango/task.rb', line 14 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.
35 36 37 |
# File 'lib/arango/task.rb', line 35 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.
62 63 64 65 66 67 68 69 70 |
# File 'lib/arango/task.rb', line 62 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
93 94 95 96 97 98 99 100 101 |
# File 'lib/arango/task.rb', line 93 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.
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/arango/task.rb', line 205 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.
227 228 229 230 |
# File 'lib/arango/task.rb', line 227 def delete Arango::Requests::Task::Delete.execute(server: @requester, args: @args) nil end |
#set_id(id) ⇒ Object
set id
178 179 180 181 182 183 184 185 |
# File 'lib/arango/task.rb', line 178 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
189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/arango/task.rb', line 189 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 |