move invalidation before $out processing
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 19 Oct 2010 15:35:23 +0000 (17:35 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 19 Oct 2010 15:35:23 +0000 (17:35 +0200)
This change allows us to write sequences like this:

$out->{eprints_id} ||= 700;
$update->{eprints_id} = $out->{eprints_id}++;

We use $out like global variable, and increment values for all
filtered fields

lib/MojoFacets/Data.pm

index b5decf5..97d442d 100644 (file)
@@ -732,6 +732,18 @@ sub items {
                        __commit_path_code( $path, $i, $code, \$commit_changed );
                }
 
+               # this might move before $out to recalculate stats on source dataset?
+               __path_rebuild_stats( $path );
+               my $c = { map { $_ => 1 } @columns };
+               my @added_columns = sort grep { ! $c->{$_} } keys %$commit_changed;
+               warn "# added_columns ",dump( @added_columns );
+               unshift @columns, @added_columns;
+
+               $loaded->{$path}->{columns} = [ @columns ];
+               warn "# new columns ",dump( @columns );
+
+               __invalidate_path_column( $path, $_ ) foreach keys %$commit_changed;
+
                $self->_save_change({
                        path => $path,
                        time => $self->param('time') || time(),
@@ -798,18 +810,7 @@ sub items {
                        return; # FIXME needed to correctly show columns
                }
 
-               # this might move before $out to recalculate stats on source dataset?
-               __path_rebuild_stats( $path );
-               my $c = { map { $_ => 1 } @columns };
-               my @added_columns = sort grep { ! $c->{$_} } keys %$commit_changed;
-               warn "# added_columns ",dump( @added_columns );
-               unshift @columns, @added_columns;
-
                $self->session('columns', [ @columns ]);
-               $loaded->{$path}->{columns} = [ @columns ];
-               warn "# new columns ",dump( @columns );
-
-               __invalidate_path_column( $path, $_ ) foreach keys %$commit_changed;
        }
 
        my $sorted_items;