lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm
changeset 100 4dae01f2beee
parent 97 f68abe1d7358
child 102 396528bdb9ad
equal deleted inserted replaced
99:0e40a68ba421 100:4dae01f2beee
    36 
    36 
    37 sub _build_query_from_search_string {
    37 sub _build_query_from_search_string {
    38     my ($self, $search_str) = @_;
    38     my ($self, $search_str) = @_;
    39     return $self->sql_utils->build_query_from_search_string(
    39     return $self->sql_utils->build_query_from_search_string(
    40         $search_str,
    40         $search_str,
    41         $self->app->config->{WebInterface}->{ExtraColumns}->{Index}, {
    41         $self->app->config->{WebInterface}->{ExtraColumns}->{Search}, {
    42             user_id     => { name => 'crash_user.user_id' },
    42             user_id     => { name => 'crash_user.user_id' },
    43             product     => { name => 'product.name' },
    43             product     => { name => 'product.name' },
    44             version     => { name => 'product.version' },
    44             version     => { name => 'product.version' },
    45             channel     => { name => 'product.release_channel' },
    45             channel     => { name => 'product.release_channel' },
    46             function    => { name => 'crash_group.crash_thread_signature_bt', type => "fuzzy" },
    46             function    => { name => 'crash_group.crash_thread_signature_bt', type => "fuzzy" },
    70     my $pager = Data::Page->new();
    70     my $pager = Data::Page->new();
    71     $pager->total_entries($count->{total});
    71     $pager->total_entries($count->{total});
    72     $pager->entries_per_page($nperpage);
    72     $pager->entries_per_page($nperpage);
    73     $pager->current_page($pagen);
    73     $pager->current_page($pagen);
    74 
    74 
       
    75     my @extra_cols;
       
    76     foreach my $extra_col(@{$self->app->config->{WebInterface}->{ExtraColumns}->{GroupIndex}}) {
       
    77         push @extra_cols, $extra_col->{db_column} . " AS " . $extra_col->{id};
       
    78     }
       
    79     my $extra_columns = join(",", @extra_cols);
       
    80 
    75     my $results = $self->db->query("
    81     my $results = $self->db->query("
    76         SELECT crash_groups.uuid, title, group_by_count.*
    82         SELECT crash_groups.uuid, title, group_by_count.*
    77         FROM crash_groups,
    83         FROM crash_groups,
    78              ( SELECT crash_group_id AS id,
    84              ( SELECT crash_group_id AS id,
    79                     min(version) AS first_version,
    85                     min(version) AS first_version,
    80                     max(version) AS last_version,
    86                     max(version) AS last_version,
    81                     string_agg(distinct(name), ', ') AS product_names,
    87                     string_agg(distinct(name), ', ') AS product_names,
    82                     string_agg(distinct(main_module), ', ') AS program_names,
    88                     $extra_columns,
    83                     count(*) AS crash_count
    89                     count(*) AS crash_count
    84                FROM crash_reports
    90                FROM crash_reports
    85                LEFT JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id
    91                LEFT JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id
    86                LEFT JOIN products AS product ON crash_reports.product_id = product.id
    92                LEFT JOIN products AS product ON crash_reports.product_id = product.id
    87                JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id
    93                JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id