pgjob 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|