pgjob 0.1.0 → 0.1.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.
- data/CHANGELOG.md +4 -0
- data/lib/pgjob/job.rb +38 -8
- data/lib/pgjob/version.rb +1 -1
- data/spec/job_spec.rb +41 -5
- metadata +1 -1
data/CHANGELOG.md
CHANGED
data/lib/pgjob/job.rb
CHANGED
@@ -24,7 +24,8 @@ module PGJob
|
|
24
24
|
id SERIAL,
|
25
25
|
name character varying(255),
|
26
26
|
params text,
|
27
|
-
|
27
|
+
mode character varying(20),
|
28
|
+
status character varying(255),
|
28
29
|
log text
|
29
30
|
);
|
30
31
|
SQL
|
@@ -50,8 +51,8 @@ module PGJob
|
|
50
51
|
assert_symbol_keys!(params)
|
51
52
|
|
52
53
|
sql = <<-SQL
|
53
|
-
INSERT INTO jobs(name, params, status)
|
54
|
-
VALUES('#{@conn.escape(name)}', '#{@conn.escape JSON.dump(params)}', 'wait')
|
54
|
+
INSERT INTO jobs(name, params, mode, status)
|
55
|
+
VALUES('#{@conn.escape(name)}', '#{@conn.escape JSON.dump(params)}', 'wait', 'Start')
|
55
56
|
RETURNING id;
|
56
57
|
SQL
|
57
58
|
@conn.exec(sql).to_a.first['id'].to_i
|
@@ -68,22 +69,26 @@ module PGJob
|
|
68
69
|
end
|
69
70
|
|
70
71
|
# Sets/Returns status
|
71
|
-
def status(id, value = nil)
|
72
|
-
if
|
73
|
-
raise "wrong
|
72
|
+
def status(id, mode = nil, value = nil )
|
73
|
+
if mode
|
74
|
+
raise "wrong mode #{mode}" unless [:running, :success, :failed].include?(mode.to_sym)
|
75
|
+
raise "set value" unless value
|
74
76
|
sql = <<-SQL
|
75
77
|
UPDATE jobs
|
76
|
-
SET
|
78
|
+
SET
|
79
|
+
mode = '#{mode}',
|
80
|
+
status = '#{@conn.escape value}'
|
77
81
|
WHERE id = #{id};
|
78
82
|
SQL
|
79
83
|
@conn.exec(sql)
|
84
|
+
add_log(id, "[mode] #{mode} - #{value}")
|
80
85
|
else
|
81
86
|
sql = <<-SQL
|
82
87
|
SELECT status
|
83
88
|
FROM jobs
|
84
89
|
WHERE id = #{id};
|
85
90
|
SQL
|
86
|
-
@conn.exec(sql).to_a.first['status']
|
91
|
+
@conn.exec(sql).to_a.first['status']
|
87
92
|
end
|
88
93
|
end
|
89
94
|
|
@@ -117,6 +122,22 @@ module PGJob
|
|
117
122
|
@conn.exec(sql)
|
118
123
|
end
|
119
124
|
|
125
|
+
def running?(id)
|
126
|
+
[:wait, :running].include? mode(id)
|
127
|
+
end
|
128
|
+
|
129
|
+
def finished?(id)
|
130
|
+
[:success, :failed].include? mode(id)
|
131
|
+
end
|
132
|
+
|
133
|
+
def success?(id)
|
134
|
+
mode(id) == :success
|
135
|
+
end
|
136
|
+
|
137
|
+
def failed?(id)
|
138
|
+
mode(id) == :failed
|
139
|
+
end
|
140
|
+
|
120
141
|
private
|
121
142
|
def assert_symbol_keys!(hash)
|
122
143
|
hash.each do |key, value|
|
@@ -141,6 +162,15 @@ module PGJob
|
|
141
162
|
end
|
142
163
|
out
|
143
164
|
end
|
165
|
+
|
166
|
+
def mode(id)
|
167
|
+
sql = <<-SQL
|
168
|
+
SELECT mode
|
169
|
+
FROM jobs
|
170
|
+
WHERE id = #{id};
|
171
|
+
SQL
|
172
|
+
@conn.exec(sql).to_a.first['mode'].to_sym
|
173
|
+
end
|
144
174
|
|
145
175
|
def tables
|
146
176
|
sql = <<-SQL
|
data/lib/pgjob/version.rb
CHANGED
data/spec/job_spec.rb
CHANGED
@@ -28,15 +28,43 @@ describe PGJob::Job do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
describe '#status' do
|
31
|
-
it '
|
31
|
+
it 'running' do
|
32
32
|
id = @job.create("test", key: 'value')
|
33
|
-
|
33
|
+
|
34
|
+
@job.status(id, :running, 'info')
|
35
|
+
|
36
|
+
@job.running?(id).should be_true
|
37
|
+
@job.finished?(id).should be_false
|
38
|
+
@job.success?(id).should be_false
|
39
|
+
@job.failed?(id).should be_false
|
40
|
+
|
41
|
+
@job.status(id).should == 'info'
|
34
42
|
end
|
35
43
|
|
36
|
-
it '
|
44
|
+
it 'success' do
|
37
45
|
id = @job.create("test", key: 'value')
|
38
|
-
|
39
|
-
@job.status(id
|
46
|
+
|
47
|
+
@job.status(id, :success, 'info')
|
48
|
+
|
49
|
+
@job.running?(id).should be_false
|
50
|
+
@job.finished?(id).should be_true
|
51
|
+
@job.success?(id).should be_true
|
52
|
+
@job.failed?(id).should be_false
|
53
|
+
|
54
|
+
@job.status(id).should == 'info'
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'failed' do
|
58
|
+
id = @job.create("test", key: 'value')
|
59
|
+
|
60
|
+
@job.status(id, :failed, 'info')
|
61
|
+
|
62
|
+
@job.running?(id).should be_false
|
63
|
+
@job.finished?(id).should be_true
|
64
|
+
@job.success?(id).should be_false
|
65
|
+
@job.failed?(id).should be_true
|
66
|
+
|
67
|
+
@job.status(id).should == 'info'
|
40
68
|
end
|
41
69
|
end
|
42
70
|
|
@@ -76,5 +104,13 @@ describe PGJob::Job do
|
|
76
104
|
@job.add_log(id, hard)
|
77
105
|
@job.log(id).should == hard
|
78
106
|
end
|
107
|
+
|
108
|
+
it "log + status" do
|
109
|
+
id = @job.create("test")
|
110
|
+
@job.add_log(id, 'msg1')
|
111
|
+
@job.status(id, :success, 'done')
|
112
|
+
@job.add_log(id, 'msg2')
|
113
|
+
@job.log(id).should == "msg1\n[mode] success - done\nmsg2"
|
114
|
+
end
|
79
115
|
end
|
80
116
|
end
|