@@ -7,26 +7,18 @@ class Scheduler::RecurringSchedule
77 attr_reader :scheduled_tasks
88
99 def initialize ( static_tasks , dynamic_tasks_enabled : false )
10- @static_tasks = Array ( static_tasks ) . map { |task | SolidQueue ::RecurringTask . wrap ( task ) } . select ( &:valid? )
11- @scheduled_tasks = Concurrent ::Hash . new
12- @changes = Concurrent ::Hash . new
10+ @static_tasks = Array ( static_tasks ) . map { |task | RecurringTask . wrap ( task ) } . select ( &:valid? )
1311 @dynamic_tasks_enabled = dynamic_tasks_enabled
12+
13+ @scheduled_tasks = Concurrent ::Hash . new
1414 end
1515
1616 def configured_tasks
17- if dynamic_tasks_enabled?
18- static_tasks + dynamic_tasks . to_a
19- else
20- static_tasks
21- end
17+ static_tasks + dynamic_tasks
2218 end
2319
2420 def empty?
25- if dynamic_tasks_enabled?
26- scheduled_tasks . empty? && dynamic_tasks . none?
27- else
28- scheduled_tasks . empty?
29- end
21+ scheduled_tasks . empty? && dynamic_tasks . empty?
3022 end
3123
3224 def schedule_tasks
@@ -50,69 +42,55 @@ def unschedule_tasks
5042 end
5143
5244 def task_keys
53- if dynamic_tasks_enabled?
54- static_task_keys + dynamic_tasks . pluck ( :key )
55- else
56- static_task_keys
57- end
45+ static_task_keys + dynamic_task_keys
5846 end
5947
60- def reload!
48+ def reload_dynamic_tasks
6149 wrap_in_app_executor do
62- { added_tasks : schedule_new_dynamic_tasks ,
63- removed_tasks : unschedule_old_dynamic_tasks } . each do |key , values |
64- if values . any?
65- @changes [ key ] = values
66- else
67- @changes . delete ( key )
68- end
69- end
50+ schedule_created_dynamic_tasks
51+ unschedule_deleted_dynamic_tasks
7052 end
7153 end
7254
73- def changed?
74- @changes . any?
75- end
76-
77- def clear_changes
78- @changes . clear
79- end
80-
8155 private
8256 attr_reader :static_tasks
8357
84- def dynamic_tasks_enabled?
85- @dynamic_tasks_enabled
58+ def static_task_keys
59+ static_tasks . map ( & :key )
8660 end
8761
8862 def dynamic_tasks
89- SolidQueue :: RecurringTask . dynamic
63+ dynamic_tasks_enabled? ? RecurringTask . dynamic : RecurringTask . none
9064 end
9165
92- def static_task_keys
93- static_tasks . map ( &:key )
66+ def dynamic_task_keys
67+ dynamic_tasks . pluck ( :key )
68+ end
69+
70+ def dynamic_tasks_enabled?
71+ @dynamic_tasks_enabled
9472 end
9573
96- def schedule_new_dynamic_tasks
74+ def schedule_created_dynamic_tasks
9775 dynamic_tasks . where . not ( key : scheduled_tasks . keys ) . each do |task |
9876 schedule_task ( task )
9977 end
10078 end
10179
102- def unschedule_old_dynamic_tasks
103- ( scheduled_tasks . keys - SolidQueue :: RecurringTask . pluck ( :key ) ) . each do |key |
80+ def unschedule_deleted_dynamic_tasks
81+ ( scheduled_tasks . keys - RecurringTask . pluck ( :key ) ) . each do |key |
10482 scheduled_tasks [ key ] . cancel
10583 scheduled_tasks . delete ( key )
10684 end
10785 end
10886
10987 def persist_static_tasks
110- SolidQueue :: RecurringTask . static . where . not ( key : static_task_keys ) . delete_all
111- SolidQueue :: RecurringTask . create_or_update_all static_tasks
88+ RecurringTask . static . where . not ( key : static_task_keys ) . delete_all
89+ RecurringTask . create_or_update_all static_tasks
11290 end
11391
11492 def reload_static_tasks
115- @static_tasks = SolidQueue :: RecurringTask . static . where ( key : static_task_keys ) . to_a
93+ @static_tasks = RecurringTask . static . where ( key : static_task_keys ) . to_a
11694 end
11795
11896 def schedule ( task )
0 commit comments