dynamodb-sidekiq-scheduler 0.0.1 → 0.2

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