Restore searching on extra columns
authorVincent Tondellier <tonton+hg@team1664.org>
Tue, 29 Dec 2015 00:15:38 +0100
changeset 89 d84db31dd51c
parent 88 c82f5589db11
child 90 6f091abdf5fb
Restore searching on extra columns
lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm
lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm
--- a/lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm	Mon Dec 28 23:08:23 2015 +0100
+++ b/lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm	Tue Dec 29 00:15:38 2015 +0100
@@ -13,8 +13,10 @@
 
 package CrashTest::Plugin::Storage::Sql::Model::CrashGroup;
 use Mojo::Base -base;
+use Data::Page;
 #use DBI::Log;
 #$DBI::Log::trace = 0;
+use Search::QueryParser::SQL;
 
 use Storable 'dclone';
 use CrashTest::Model::Thread;
@@ -34,7 +36,7 @@
 }
 
 sub _build_query_from_search_string {
-    my ($self, $search) = @_;
+    my ($self, $search, $extra_columns) = @_;
 
     my @values;
 
@@ -57,6 +59,10 @@
         function    => { callback => $cb, name => 'crash_group.crash_thread_signature_bt', type => "fuzzy" },
     };
 
+    foreach my $extra_col(@$extra_columns) {
+        $search_fields->{$extra_col->{id}} = { callback => $cb, name => $extra_col->{db_column} };
+    }
+
     my $parser = Search::QueryParser::SQL->new(
         columns         => $search_fields,
         default_column  => "function",
@@ -79,7 +85,7 @@
     my $where = "";
     my @values = ();
     if(defined($search_str) && $search_str ne "") {
-        my $q = $self->_build_query_from_search_string($search_str);
+        my $q = $self->_build_query_from_search_string($search_str, $self->app->config->{WebInterface}->{ExtraColumns}->{Index});
         $where = "WHERE " . $q->[0];
         @values = @{$q->[1]};
     }
--- a/lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm	Mon Dec 28 23:08:23 2015 +0100
+++ b/lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm	Tue Dec 29 00:15:38 2015 +0100
@@ -37,7 +37,7 @@
 }
 
 sub _build_query_from_search_string {
-    my ($self, $search) = @_;
+    my ($self, $search, $extra_columns) = @_;
 
     my @values;
 
@@ -61,6 +61,10 @@
         function    => { callback => $cb, name => 'crash_group.crash_thread_signature_bt', type => "fuzzy" },
     };
 
+    foreach my $extra_col(@$extra_columns) {
+        $search_fields->{$extra_col->{id}} = { callback => $cb, name => $extra_col->{db_column} };
+    }
+
     my $parser = Search::QueryParser::SQL->new(
         columns         => $search_fields,
         default_column  => "function",
@@ -83,7 +87,7 @@
     my $where = "";
     my @values = ();
     if(defined($search_str) && $search_str ne "") {
-        my $q = $self->_build_query_from_search_string($search_str);
+        my $q = $self->_build_query_from_search_string($search_str, $self->app->config->{WebInterface}->{ExtraColumns}->{Index});
         $where = "WHERE " . $q->[0];
         @values = @{$q->[1]};
     }