1 package SL::DB::Manager::BackgroundJob;
 
   5 use SL::DB::Helper::Manager;
 
   6 use base qw(SL::DB::Helper::Manager);
 
   8 use SL::DB::Helper::Paginated;
 
   9 use SL::DB::Helper::Sorted;
 
  11 sub object_class { 'SL::DB::BackgroundJob' }
 
  13 __PACKAGE__->make_manager_methods;
 
  16   return ( default => [ 'next_run_at', 1 ],
 
  17            columns => { SIMPLE => 'ALL' } );
 
  22   $class->delete_all(where => [ and => [ type => 'once', last_run_at => { lt => DateTime->now_local->subtract(days => '1') } ] ]);
 
  25 sub get_all_need_to_run {
 
  28   my $now           = DateTime->now_local;
 
  29   my @interval_args = (and => [ type        => 'interval',
 
  31                                 next_run_at => { le => $now } ]);
 
  32   my @once_args     = (and => [ type        => 'once',
 
  35                                 or          => [ cron_spec   => undef,
 
  38                                                  next_run_at => { le => $now } ] ]);
 
  40   return $class->get_all(query => [ or => [ @interval_args, @once_args ] ]);