pgjob 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  # ChangeLog
2
2
 
3
+ ## PGJob 0.1.1 (July 8, 2012)
4
+
5
+ * Add job string status
6
+
3
7
  ## PGJob 0.1.0 (July 8, 2012)
4
8
 
5
9
  * First public release
@@ -24,7 +24,8 @@ module PGJob
24
24
  id SERIAL,
25
25
  name character varying(255),
26
26
  params text,
27
- status character varying(20),
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 value
73
- raise "wrong value" unless [:wait, :running, :success, :failed].include?(value.to_sym)
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 status = '#{@conn.escape value.to_s}'
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'].to_sym
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
@@ -1,3 +1,3 @@
1
1
  module PGJob
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -28,15 +28,43 @@ describe PGJob::Job do
28
28
  end
29
29
 
30
30
  describe '#status' do
31
- it 'returns' do
31
+ it 'running' do
32
32
  id = @job.create("test", key: 'value')
33
- @job.status(id).should == :wait
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 'sets' do
44
+ it 'success' do
37
45
  id = @job.create("test", key: 'value')
38
- @job.status(id, :running)
39
- @job.status(id).should == :running
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgjob
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: