From: Arthur Axel "fREW" Schmidt Date: Wed, 28 Apr 2010 21:51:47 +0000 (+0000) Subject: allow for multipk X-Git-Tag: v0.900201~14 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class-Journal.git;a=commitdiff_plain;h=19de675b7c557a878809943a0fb7a98c784641ab allow for multipk --- diff --git a/lib/DBIx/Class/Schema/Journal.pm b/lib/DBIx/Class/Schema/Journal.pm index f2618f9..29aaefc 100644 --- a/lib/DBIx/Class/Schema/Journal.pm +++ b/lib/DBIx/Class/Schema/Journal.pm @@ -160,7 +160,7 @@ sub prepopulate_journal { next unless $j_sources{$s_name}; my $from_rs = $schema->resultset($s_name); - my ($pk) = $from_rs->result_source->primary_columns; + my @pks = $from_rs->result_source->primary_columns; $from_rs->result_class('DBIx::Class::ResultClass::HashRefInflator'); my $to_rs = $j_schema->resultset("${s_name}AuditHistory"); @@ -174,15 +174,21 @@ sub prepopulate_journal { }) ) { # get some number of change log IDs to be generated for this page - my @log_ids = map { $_->id } - $changelog_rs->populate([ - map {{ changeset_id => $chs_id }} (0 .. $#x) - ]); - + my @log_ids = map $_->id, + $changelog_rs->populate([ + map +{ changeset_id => $chs_id }, (0 .. $#x) + ]); + + + my @datas; + for my $idx (0 .. $#x ) { + push @datas, { + create_id => $log_ids[$idx], + map { $_ => $x[$idx]->{$_} } @pks, + } + } # create the audit log entries for the rows in this page - $log_rs->populate([ - map {{ create_id => $log_ids[$_], $pk => $x[$_]->{$pk} }} (0 .. $#x) - ]); + $log_rs->populate([@datas]); # now populate the audit history $to_rs->populate([