42 lines
1.1 KiB
D
42 lines
1.1 KiB
D
module scheduled_jobs;
|
|
|
|
import scheduled;
|
|
import std.datetime;
|
|
import slf4d;
|
|
|
|
void startScheduledJobs() {
|
|
JobSchedule analyticsSchedule = new FixedIntervalSchedule(
|
|
days(1),
|
|
Clock.currTime(UTC()) + seconds(5)
|
|
);
|
|
|
|
JobScheduler jobScheduler = new TaskPoolScheduler();
|
|
jobScheduler.addJob(() {
|
|
// Clear old analytics data from profiles.
|
|
import profile.data;
|
|
import profile.data_impl_sqlite;
|
|
import profile.model;
|
|
FileSystemProfileRepository.doForAllUserProfiles(
|
|
(Profile profile, ProfileRepository profileRepo) {
|
|
ProfileDataSource ds = profileRepo.getDataSource(profile);
|
|
auto props = ds.getPropertiesRepository().findAll();
|
|
bool shouldDelete = false;
|
|
foreach (prop; props) {
|
|
import std.string : startsWith;
|
|
if (startsWith(prop.property, "analytics")) {
|
|
shouldDelete = true;
|
|
break;
|
|
}
|
|
}
|
|
if (shouldDelete) {
|
|
ds.getPropertiesRepository().deleteAllByPrefix("analytics");
|
|
infoF!"Deleted all old \"analytics\" properties for user %s profile %s."(
|
|
profile.username, profile.name
|
|
);
|
|
}
|
|
}
|
|
);
|
|
|
|
}, analyticsSchedule);
|
|
jobScheduler.start();
|
|
} |