Skip to content

Commit b460a97

Browse files
committed
Refactor recurrence class
1 parent ff36624 commit b460a97

File tree

1 file changed

+62
-51
lines changed

1 file changed

+62
-51
lines changed

src/InEngine.Core/Scheduling/Recurrence.cs

Lines changed: 62 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -14,97 +14,108 @@ public TriggerBuilder MakeTriggerBuilder(AbstractCommand command)
1414
{
1515
return TriggerBuilder
1616
.Create()
17-
.WithIdentity($"{command.Name}:job:{command.ScheduleId}", command.SchedulerGroup);
17+
.WithIdentity($"{command.Name}:job:{command.ScheduleId}", command.SchedulerGroup);
1818
}
1919

20-
public void EverySecond()
20+
public ITrigger MakeTrigger(AbstractCommand command, Action<DailyTimeIntervalScheduleBuilder> action)
2121
{
22-
var trigger = MakeTriggerBuilder(Command)
23-
.StartNow()
24-
.WithSimpleSchedule(x => x.WithIntervalInSeconds(1).RepeatForever())
22+
return MakeTriggerBuilder(command)
23+
.WithDailyTimeIntervalSchedule(action)
2524
.Build();
26-
Scheduler.ScheduleJob(JobDetail, trigger);
2725
}
2826

29-
public void EveryMinute()
27+
public ITrigger MakeTrigger(AbstractCommand command, string cronExpression)
3028
{
31-
var trigger = MakeTriggerBuilder(Command)
32-
.StartNow()
33-
.WithSimpleSchedule(x => x.WithIntervalInMinutes(1).RepeatForever())
29+
return MakeTriggerBuilder(command)
30+
.WithCronSchedule(cronExpression)
3431
.Build();
35-
Scheduler.ScheduleJob(JobDetail, trigger);
3632
}
3733

38-
public void EveryFiveMinutes()
34+
public ITrigger MakeTrigger(AbstractCommand command, Action<SimpleScheduleBuilder> action)
3935
{
40-
var trigger = MakeTriggerBuilder(Command)
41-
.StartNow()
42-
.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())
36+
return MakeTriggerBuilder(command)
37+
.WithSimpleSchedule(action)
4338
.Build();
44-
Scheduler.ScheduleJob(JobDetail, trigger);
39+
}
40+
41+
public void EverySecond()
42+
{
43+
Scheduler.ScheduleJob(
44+
JobDetail,
45+
MakeTrigger(Command, x => x.WithIntervalInSeconds(1).RepeatForever())
46+
);
47+
}
48+
49+
public void EveryMinute()
50+
{
51+
Scheduler.ScheduleJob(
52+
JobDetail,
53+
MakeTrigger(Command, x => x.WithIntervalInMinutes(1).RepeatForever())
54+
);
55+
}
56+
57+
public void EveryFiveMinutes()
58+
{
59+
Scheduler.ScheduleJob(
60+
JobDetail,
61+
MakeTrigger(Command, x => x.WithIntervalInMinutes(5).RepeatForever())
62+
);
4563
}
4664

4765
public void EveryTenMinutes()
4866
{
49-
var trigger = MakeTriggerBuilder(Command)
50-
.StartNow()
51-
.WithSimpleSchedule(x => x.WithIntervalInMinutes(10).RepeatForever())
52-
.Build();
53-
Scheduler.ScheduleJob(JobDetail, trigger);
67+
Scheduler.ScheduleJob(
68+
JobDetail,
69+
MakeTrigger(Command, x => x.WithIntervalInMinutes(10).RepeatForever())
70+
);
5471
}
5572

5673
public void EveryFifteenMinutes()
5774
{
58-
var trigger = MakeTriggerBuilder(Command)
59-
.StartNow()
60-
.WithSimpleSchedule(x => x.WithIntervalInMinutes(15).RepeatForever())
61-
.Build();
62-
Scheduler.ScheduleJob(JobDetail, trigger);
75+
Scheduler.ScheduleJob(
76+
JobDetail,
77+
MakeTrigger(Command, x => x.WithIntervalInMinutes(15).RepeatForever())
78+
);
6379
}
6480

6581
public void EveryThirtyMinutes()
6682
{
67-
var trigger = MakeTriggerBuilder(Command)
68-
.StartNow()
69-
.WithSimpleSchedule(x => x.WithIntervalInMinutes(30).RepeatForever())
70-
.Build();
71-
Scheduler.ScheduleJob(JobDetail, trigger);
83+
Scheduler.ScheduleJob(
84+
JobDetail,
85+
MakeTrigger(Command, x => x.WithIntervalInMinutes(30).RepeatForever())
86+
);
7287
}
7388

7489
public void Hourly()
7590
{
76-
var trigger = MakeTriggerBuilder(Command)
77-
.StartNow()
78-
.WithSimpleSchedule(x => x.WithIntervalInHours(1).RepeatForever())
79-
.Build();
80-
Scheduler.ScheduleJob(JobDetail, trigger);
91+
Scheduler.ScheduleJob(
92+
JobDetail,
93+
MakeTrigger(Command, x => x.WithIntervalInHours(1).RepeatForever())
94+
);
8195
}
8296

8397
public void HourlyAt(int minutesAfterTheHour)
8498
{
85-
var trigger = MakeTriggerBuilder(Command)
86-
.StartNow()
87-
.WithCronSchedule($"0 {minutesAfterTheHour} * * * ?")
88-
.Build();
89-
Scheduler.ScheduleJob(JobDetail, trigger);
99+
Scheduler.ScheduleJob(
100+
JobDetail,
101+
MakeTrigger(Command, $"0 {minutesAfterTheHour} * * * ?")
102+
);
90103
}
91104

92105
public void Daily()
93106
{
94-
var trigger = MakeTriggerBuilder(Command)
95-
.StartNow()
96-
.WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
97-
.Build();
98-
Scheduler.ScheduleJob(JobDetail, trigger);
107+
Scheduler.ScheduleJob(
108+
JobDetail,
109+
MakeTrigger(Command, x => x.WithIntervalInHours(24).RepeatForever())
110+
);
99111
}
100112

101113
public void DailyAt(TimeOfDay timeOfDay)
102114
{
103-
var trigger = MakeTriggerBuilder(Command)
104-
.StartNow()
105-
.WithDailyTimeIntervalSchedule(x => x.StartingDailyAt(timeOfDay))
106-
.Build();
107-
Scheduler.ScheduleJob(JobDetail, trigger);
115+
Scheduler.ScheduleJob(
116+
JobDetail,
117+
MakeTrigger(Command, x => x.StartingDailyAt(timeOfDay))
118+
);
108119
}
109120
}
110121
}

0 commit comments

Comments
 (0)