From f20cce2f4609febcf1349703ad1ad131608207e6 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sat, 5 Jun 2010 21:50:51 +0200 Subject: [PATCH] edit will just mark stats invalid by modified == 2 So, we use magic number 2 in modified to rebuild stats so we don't have to do it for each edit. This improved speed of ajax and actions-to-changes --- lib/MojoFacets/Data.pm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index be11c7c..d9109cf 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -252,6 +252,13 @@ sub _loaded { my ( $self, $name ) = @_; my $path = $self->session('path') || $self->param('path'); $self->redirect_to('/data/index') unless $path; + + if ( $loaded->{$path}->{modified} > 1 ) { + warn "rebuild stats for $path forced by modified\n"; + $loaded->{$path}->{stats} = __stats( $loaded->{$path}->{data}->{items} ); + $loaded->{$path}->{modified} = 1; + } + if ( ! defined $loaded->{$path}->{$name} ) { warn "$path $name isn't loaded\n"; $self->_load_path( $path ); @@ -788,9 +795,9 @@ sub edit { } $status = 201; # created - $loaded->{$path}->{modified} = 1; - $self->session( 'modified' => 1 ); - delete $loaded->{$path}->{stats}; + # modified = 2 -- force rebuild of stats + $loaded->{$path}->{modified} = 2; + $self->session( 'modified' => 2 ); $new_content = join("\xB6",@$v); -- 2.20.1