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.
@@ -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: