X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/03fc848dccbb1c0100b1f72a899b7087234b7029..ee71ba3372b47b7de1e30d56db92c1315ae1e104:/SL/BackgroundJob/Base.pm diff --git a/SL/BackgroundJob/Base.pm b/SL/BackgroundJob/Base.pm new file mode 100644 index 000000000..44702d84d --- /dev/null +++ b/SL/BackgroundJob/Base.pm @@ -0,0 +1,31 @@ +package SL::BackgroundJob::Base; + +use strict; + +use parent qw(Rose::Object); + +use SL::DB::BackgroundJob; + +sub create_standard_job { + my $self_or_class = shift; + my $cron_spec = shift; + + my $package = ref($self_or_class) || $self_or_class; + $package =~ s/SL::BackgroundJob:://; + + my %params = (cron_spec => $cron_spec || '* * * * *', + type => 'interval', + active => 1, + package_name => $package); + + my $job = SL::DB::Manager::BackgroundJob->find_by(package_name => $params{package_name}); + if (!$job) { + $job = SL::DB::BackgroundJob->new(%params)->update_next_run_at; + } else { + $job->assign_attributes(%params)->update_next_run_at; + } + + return $job; +} + +1;