Class: QBWC::ActiveRecord::Job

Inherits:
Job
  • Object
show all
Defined in:
lib/qbwc/active_record/job.rb

Defined Under Namespace

Classes: QbwcJob

Instance Attribute Summary

Attributes inherited from Job

#company, #name, #worker_class

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Job

#disable, #enable, #initialize, #next_request, #pending?, #process_response, #requests=, #worker

Constructor Details

This class inherits a constructor from QBWC::Job

Class Method Details

.add_job(name, enabled, company, worker_class, requests, data) ⇒ Object

Creates and persists a job.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/qbwc/active_record/job.rb', line 15

def self.add_job(name, enabled, company, worker_class, requests, data)
  worker_class = worker_class.to_s
  ar_job = find_ar_job_with_name(name).first_or_initialize
  ar_job.company = company
  ar_job.enabled = enabled
  ar_job.worker_class = worker_class
  ar_job.save!

  jb = self.new(name, enabled, company, worker_class, requests, data)
  unless requests.nil? || requests.empty?
    request_hash = { [nil, company] => [requests].flatten }

    jb.requests = request_hash
    ar_job.update_attribute :requests, request_hash
  end
  jb.requests_provided_when_job_added = (! requests.nil? && ! requests.empty?)
  jb.data = data
  jb
end

.clear_jobsObject



117
118
119
# File 'lib/qbwc/active_record/job.rb', line 117

def self.clear_jobs
  QbwcJob.delete_all
end

.delete_job_with_name(name) ⇒ Object



49
50
51
52
# File 'lib/qbwc/active_record/job.rb', line 49

def self.delete_job_with_name(name)
  j = find_ar_job_with_name(name).first
  j.destroy unless j.nil?
end

.find_ar_job_with_name(name) ⇒ Object



41
42
43
# File 'lib/qbwc/active_record/job.rb', line 41

def self.find_ar_job_with_name(name)
  QbwcJob.where(:name => name)
end

.find_job_with_name(name) ⇒ Object



35
36
37
38
39
# File 'lib/qbwc/active_record/job.rb', line 35

def self.find_job_with_name(name)
  j = find_ar_job_with_name(name).first
  j = j.to_qbwc_job unless j.nil?
  return j
end

.list_jobsObject



113
114
115
# File 'lib/qbwc/active_record/job.rb', line 113

def self.list_jobs
  QbwcJob.all.map {|ar_job| ar_job.to_qbwc_job}
end

.sort_in_time_order(ary) ⇒ Object



121
122
123
# File 'lib/qbwc/active_record/job.rb', line 121

def self.sort_in_time_order(ary)
  ary.sort {|a,b| a.find_ar_job.first.created_at <=> b.find_ar_job.first.created_at}
end

Instance Method Details

#advance_next_request(session) ⇒ Object



101
102
103
104
# File 'lib/qbwc/active_record/job.rb', line 101

def advance_next_request(session)
  nr = request_index(session)
  set_request_index session, nr + 1
end

#dataObject



81
82
83
# File 'lib/qbwc/active_record/job.rb', line 81

def data
  find_ar_job.pluck(:data).first
end

#data=(r) ⇒ Object



85
86
87
88
# File 'lib/qbwc/active_record/job.rb', line 85

def data=(r)
  find_ar_job.update_all(:data => r)
  super
end

#enabled=(value) ⇒ Object



54
55
56
# File 'lib/qbwc/active_record/job.rb', line 54

def enabled=(value)
  find_ar_job.update_all(:enabled => value)
end

#enabled?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/qbwc/active_record/job.rb', line 58

def enabled?
  find_ar_job.where(:enabled => true).exists?
end

#find_ar_jobObject



45
46
47
# File 'lib/qbwc/active_record/job.rb', line 45

def find_ar_job
  self.class.find_ar_job_with_name(name)
end

#request_index(session) ⇒ Object



90
91
92
# File 'lib/qbwc/active_record/job.rb', line 90

def request_index(session)
  (find_ar_job.pluck(:request_index).first || {})[session.key] || 0
end

#requests(session = QBWC::Session.get) ⇒ Object



62
63
64
65
# File 'lib/qbwc/active_record/job.rb', line 62

def requests(session = QBWC::Session.get)
  @requests = find_ar_job.pluck(:requests).first
  super
end

#requests_provided_when_job_addedObject



72
73
74
# File 'lib/qbwc/active_record/job.rb', line 72

def requests_provided_when_job_added
  find_ar_job.pluck(:requests_provided_when_job_added).first
end

#requests_provided_when_job_added=(value) ⇒ Object



76
77
78
79
# File 'lib/qbwc/active_record/job.rb', line 76

def requests_provided_when_job_added=(value)
  find_ar_job.update_all(:requests_provided_when_job_added => value)
  super
end

#resetObject



106
107
108
109
110
111
# File 'lib/qbwc/active_record/job.rb', line 106

def reset
  super
  job = find_ar_job
  job.update_all :request_index => {}
  job.update_all(:requests => {}) unless self.requests_provided_when_job_added
end

#set_request_index(session, index) ⇒ Object



94
95
96
97
98
99
# File 'lib/qbwc/active_record/job.rb', line 94

def set_request_index(session, index)
  find_ar_job.each do |jb|
    jb.request_index[session.key] = index
    jb.save
  end
end

#set_requests(session, requests) ⇒ Object



67
68
69
70
# File 'lib/qbwc/active_record/job.rb', line 67

def set_requests(session, requests)
  super
  find_ar_job.update_all(:requests => @requests)
end