X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/2d7e4203055156dccb2ca3fba82bbb32873ecd2e..ad4bebf4dfcc48d0e313bfc4cb045de485c4d9fb:/SL/DB/BackgroundJob.pm diff --git a/SL/DB/BackgroundJob.pm b/SL/DB/BackgroundJob.pm index e8ae55bac..1fc8d992d 100644 --- a/SL/DB/BackgroundJob.pm +++ b/SL/DB/BackgroundJob.pm @@ -5,10 +5,13 @@ use strict; use DateTime::Event::Cron; use English qw(-no_match_vars); +use Rose::DB::Object::Helpers qw(as_tree); + use SL::DB::MetaSetup::BackgroundJob; use SL::DB::Manager::BackgroundJob; use SL::System::Process; +use SL::YAML; __PACKAGE__->meta->initialize; @@ -45,7 +48,7 @@ sub run { $history = SL::DB::BackgroundJobHistory ->new(package_name => $self->package_name, run_at => $run_at, - status => 'success', + status => SL::DB::BackgroundJobHistory::SUCCESS(), result => $result, data => $self->data); $history->save; @@ -58,7 +61,7 @@ sub run { $history = SL::DB::BackgroundJobHistory ->new(package_name => $self->package_name, run_at => $run_at, - status => 'failure', + status => SL::DB::BackgroundJobHistory::FAILURE(), error_col => $error, data => $self->data); $history->save; @@ -73,18 +76,22 @@ sub run { sub data_as_hash { my $self = shift; + + $self->data(SL::YAML::Dump($_[0])) if @_; + return {} if !$self->data; return $self->data if ref($self->{data}) eq 'HASH'; - return YAML::Load($self->{data}) if !ref($self->{data}); + return SL::YAML::Load($self->{data}) if !ref($self->{data}); return {}; } sub set_data { my ($self, %data) = @_; - my $data = YAML::Load($self->data); - $data->{$_} = $data{$_} for keys %data; - $self->data(YAML::Dump($data)); + $self->data(SL::YAML::Dump({ + %{ $self->data_as_hash }, + %data, + })); $self; }