dynamodb-sidekiq-scheduler 0.0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41f36be732670f63a04e4433e7409238af7b88d906ca8eab82bdd2df2c4f12cc
4
- data.tar.gz: 59a18452ec604d55fc61d634c5b0e93d5929f2086221205d7947a2a336af1296
3
+ metadata.gz: 69eeed67230490a8eadbce9bbb18336e24332756f270f1a7df5b203b23876095
4
+ data.tar.gz: 5694659a15a3f59b86e43089d9330c2e249d20670fb9c4d07d41d11c21670b2e
5
5
  SHA512:
6
- metadata.gz: 3e6b963abf528bfd3f0d935b6efc09e56e0f28b165514a477e2dd78b6804d9ccf7e52ba58f6bc5590613677832b02e8475053a08b2eea8038068c2331ad72fea
7
- data.tar.gz: eff22625d062361600412dab4985f662c7fdad8b49b1c0a978d930013f1106c975315bd3378a48b3b58efd6011d21493aa6d6bbac1c9c382fcd9764ec854dfc3
6
+ metadata.gz: a87ef258b8a40ad07ad9ba4fc911dda0736e4a75ae3c5722e03264169367ef5c67468b6365f5a79e4d06ca5d57a99fddbc69fdbe5f6f6f9871ad2a1ef52b86e3
7
+ data.tar.gz: 1ef25e68c5a7bdd4c530f44a56fb5940a8410337902410ef1bc7ed4777eae4a027ec5f93df2677ea87e6a463beb4eb99f8ec512748d96658125c601d1e3fce81
@@ -1,3 +1,3 @@
1
1
  module SidekiqScheduler
2
- VERSION = '0.0.1'
2
+ VERSION = "0.2"
3
3
  end
@@ -46,7 +46,7 @@ module SidekiqScheduler
46
46
 
47
47
  dynamo_clas_name = ENV.fetch('SIDEKIQ_SCHEDUER_DYNAMOID_CLASS', 'ScheduleRule')
48
48
  klass = dynamo_clas_name.constantize
49
- sr = klass.where(name: params[:name]).first
49
+ sr = klass.where(job_name: params[:name]).first
50
50
  if sr.present?
51
51
  sr.destroy
52
52
  else
@@ -60,24 +60,29 @@ module SidekiqScheduler
60
60
  @title = 'Recurring Job Update'
61
61
  @form_action = "#{root_path}recurring-jobs/#{ERB::Util.url_encode(params[:name])}/update"
62
62
  @existing_rule = true
63
- @name = params[:name]
64
- @config = Sidekiq.get_schedule(params[:name])
63
+ @presented_job = JobPresenter.new(params[:name], Sidekiq.get_schedule(params[:name]))
65
64
  erb File.read(File.join(VIEW_PATH, 'recurring_job.erb'))
66
65
  end
67
66
 
68
67
  app.post '/recurring-jobs/new' do
69
68
  @title = 'New Recurring Job'
69
+ @presented_job = JobPresenter.new('', {})
70
70
  @existing_rule = false
71
71
  @form_action = "#{root_path}recurring-jobs/create"
72
- @name = ''
73
- @config = { queue: 'default', enabled: false }
74
72
  erb File.read(File.join(VIEW_PATH, 'recurring_job.erb'))
75
73
  end
76
74
 
77
75
  app.post '/recurring-jobs/:name/update' do
78
76
  dynamo_clas_name = ENV.fetch('SIDEKIQ_SCHEDUER_DYNAMOID_CLASS', 'ScheduleRule')
79
77
  klass = dynamo_clas_name.constantize
80
- klass.update_or_create name: params[:name], config: JSON.parse(params[:config])
78
+ config = params.slice(*%w[worker_class description cron queue args]).transform_values(&:presence)
79
+ sr = klass.where(job_name: params[:name]).first
80
+ if sr.present?
81
+ config.each { |k, v| sr.send "#{k}=", v}
82
+ sr.save!
83
+ else
84
+ klass.create config.merge(job_name: params[:name])
85
+ end
81
86
 
82
87
  Sidekiq.reload_schedule!
83
88
  redirect "#{root_path}recurring-jobs"
@@ -86,7 +91,9 @@ module SidekiqScheduler
86
91
  app.post '/recurring-jobs/create' do
87
92
  dynamo_clas_name = ENV.fetch('SIDEKIQ_SCHEDUER_DYNAMOID_CLASS', 'ScheduleRule')
88
93
  klass = dynamo_clas_name.constantize
89
- klass.update_or_create name: params[:name], config: JSON.parse(params[:config])
94
+ config = params.slice(*%w[job_name worker_class description cron queue args])
95
+ .transform_values(&:presence)
96
+ klass.create config
90
97
 
91
98
  Sidekiq.reload_schedule!
92
99
  redirect "#{root_path}recurring-jobs"
@@ -2,16 +2,24 @@
2
2
 
3
3
  <form action="<%= @form_action %>"
4
4
  method="post" class="recurring-job" style="background-color:white;">
5
- <%= csrf_tag %>
6
- <div style="padding: 20px;">
7
- <label for="name">Name:</label><br>
8
- <input <%= @existing_rule ? 'disabled' : 'required' %> required name='name' type="text"
9
- value="<%= @name %>" style='width:50%;'/><br>
10
- <label for="args" style="padding-top: 10px;">Configuration:</label><br>
11
- <textarea name='config' style='width:50%'><%= @config.to_json.html_safe %></textarea><br>
12
- <span class="help-block" style='width:50%;'>Example:<br>{"cron":"0 9 * * * America/New_York","class":"NameSpace::WorkerName","args":["arg1","arg2"],"description":"something","queue":"default","enabled":true}</span><br>
13
- <a href="<%= root_path %>recurring-jobs" class="btn btn-warn btn-xs"><%= t('cancel') %></a>
14
- <input type="submit" class="btn btn-warn btn-xs" value="<%= @existing_rule ? t('update') : t('create') %>"/><br>
15
- <a></a>
16
- </div>
5
+ <%= csrf_tag %>
6
+ <div style="padding: 20px;">
7
+ <label for="job_name">Job name:</label><br>
8
+ <input <%= @existing_rule ? 'disabled' : 'required' %> required name='job_name' type="text"
9
+ value="<%= @presented_job.name %>" style='width:50%;'/><br>
10
+ <label for="worker_class" style="padding-top: 10px;">Worker Class:</label><br>
11
+ <input name='worker_class' required type="text" value="<%= @presented_job['class'] %>" style='width:50%'/><br>
12
+ <label for="description" style="padding-top: 10px;">Description:</label><br>
13
+ <input name='description' type="text" value="<%= @presented_job['description'] %>" style='width:50%'/><br>
14
+ <label for="cron" style="padding-top: 10px;">Cron Rule:</label><br>
15
+ <input name='cron' type="text" value="<%= @presented_job['cron'] %>" style='width:50%'/><br>
16
+ <label for="queue" style="padding-top: 10px;">Queue:</label><br>
17
+ <input name='queue' type="text" value="<%= @presented_job['queue'] %>" style='width:50%'/><br>
18
+ <label for="args" style="padding-top: 10px;">Args:</label><br>
19
+ <input name='args' type="text" value="<%= @presented_job['args'] %>" style='width:50%'/><br><br>
20
+
21
+ <a href="<%= root_path %>recurring-jobs" class="btn btn-warn btn-xs"><%= t('cancel') %></a>
22
+ <input type="submit" class="btn btn-warn btn-xs" value="<%= @existing_rule ? t('update') : t('create') %>"/><br>
23
+ <a></a>
24
+ </div>
17
25
  </form>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamodb-sidekiq-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Morton Jonuschat
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-06-22 00:00:00.000000000 Z
13
+ date: 2023-03-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sidekiq
@@ -242,15 +242,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
242
242
  requirements:
243
243
  - - ">="
244
244
  - !ruby/object:Gem::Version
245
- version: '2.5'
245
+ version: '2.7'
246
246
  required_rubygems_version: !ruby/object:Gem::Requirement
247
247
  requirements:
248
248
  - - ">="
249
249
  - !ruby/object:Gem::Version
250
250
  version: '0'
251
251
  requirements: []
252
- rubyforge_project:
253
- rubygems_version: 2.7.6.2
252
+ rubygems_version: 3.1.6
254
253
  signing_key:
255
254
  specification_version: 4
256
255
  summary: Light weight job scheduling extension for Sidekiq