From: Moritz Bunkus Date: Fri, 29 Oct 2010 12:14:10 +0000 (+0200) Subject: BackgroundJob-Hilfsfunktionen X-Git-Tag: release-2.6.3~61^2~7^2~1^2~2^2~116 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=782fd7884fb686cd2e336756dadeb4ab5d05a415;p=kivitendo-erp.git BackgroundJob-Hilfsfunktionen --- diff --git a/SL/DB/BackgroundJob.pm b/SL/DB/BackgroundJob.pm index e6b099f55..f4edf2d30 100644 --- a/SL/DB/BackgroundJob.pm +++ b/SL/DB/BackgroundJob.pm @@ -1,13 +1,18 @@ -# This file has been auto-generated only because it didn't exist. -# Feel free to modify it at will; it will not be overwritten automatically. - package SL::DB::BackgroundJob; use strict; +use DateTime::Event::Cron; + use SL::DB::MetaSetup::BackgroundJob; +use SL::DB::Manager::BackgroundJob; + +sub update_next_run_at { + my $self = shift; -# Creates get_all, get_all_count, get_all_iterator, delete_all and update_all. -__PACKAGE__->meta->make_manager_class; + my $cron = DateTime::Event::Cron->new_from_cron($self->cron_spec || '* * * * *'); + $self->update_attributes(next_run_at => $cron->next->set_time_zone($::locale->get_local_time_zone)); + return $self; +} 1; diff --git a/SL/DB/Manager/BackgroundJob.pm b/SL/DB/Manager/BackgroundJob.pm new file mode 100644 index 000000000..178f9d37a --- /dev/null +++ b/SL/DB/Manager/BackgroundJob.pm @@ -0,0 +1,22 @@ +package SL::DB::Manager::BackgroundJob; + +use strict; + +use SL::DB::Helpers::Manager; +use base qw(SL::DB::Helpers::Manager); + +sub object_class { 'SL::DB::BackgroundJob' } + +__PACKAGE__->make_manager_methods; + +sub cleanup { + my $class = shift; + $class->delete_all(where => [ and => [ type => 'once', last_run_at => { lt => DateTime->now_local->subtract(days => '1') } ] ]); +} + +sub get_all_need_to_run { + my $class = shift; + return $class->get_all(where => [ and => [ active => 1, next_run_at => { le => DateTime->now_local } ] ]); +} + +1;