From f6d0b46dba0bc003aca643dbff52e183f95b2280 Mon Sep 17 00:00:00 2001 From: Jane Sandberg Date: Fri, 20 May 2022 09:48:43 -0600 Subject: [PATCH] LP1968754: refactor where clause into its own subroutine --- .../perlmods/lib/OpenILS/WWW/EGCatLoader/Course.pm | 92 ++++++++++++---------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Course.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Course.pm index 7446ba6f21..f0e8ab0423 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Course.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Course.pm @@ -239,18 +239,63 @@ sub load_cresults { $ctx->{processed_search_query} = $query; my $search_args = {}; my $course_numbers = (); + # Handle is_archived checkbox and Org Selector + my $search_orgs = $U->get_org_descendants($ctx->{search_ou}); + + my $where_clause = _create_where_clause($ctx, \@queries, $search_orgs); + + my $hits = $e->json_query({ + "from" => "acmc", + "select" => {"acmc" => ['id']}, + "where" => $where_clause + }); + + $results = $e->json_query({ + "from" => "acmc", + "select" => {"acmc" => [ + 'id', + 'name', + 'course_number', + 'section_number', + 'is_archived', + 'owning_lib' + ]}, + "limit" => $limit, + "offset" => $offset, + "order_by" => {"acmc" => ['id']}, + "where" => $where_clause + }); + for my $result (@$results) { + push @{$ctx->{courses}}, { + id => $result->{id}, + course_number => $result->{course_number}, + section_number => $result->{section_number}, + owning_lib => $result->{owning_lib}, + name => $result->{name}, + is_archived => $result->{is_archived}, + instructors => [] + } + } + + #$ctx->{courses} = $@courses;#[{id=>10, name=>"test", course_number=>"LIT"}]; + $ctx->{hit_count} = @$hits || 0; + #$ctx->{hit_count} = 0; + return Apache2::Const::OK; +} + +sub _create_where_clause { + my ($ctx, $queries, $search_orgs) = @_; + my $where_clause; my $and_terms = []; my $or_terms = []; - # Handle is_archived checkbox and Org Selector - my $search_orgs = $U->get_org_descendants($ctx->{search_ou}); push @$and_terms, {'owning_lib' => $search_orgs}; - push @$and_terms, {'-not' => {'+acmc' => 'is_archived'}} unless $query =~ qr\#include_archived\; + push @$and_terms, {'-not' => {'+acmc' => 'is_archived'}} unless $ctx->{processed_search_query} =~ qr\#include_archived\; # Now let's push the actual queries - for my $query_obj (@queries) { + for my $query_obj (@{$queries}) { my $type = $query_obj->{'qtype'}; my $query = $query_obj->{'value'}; $query =~ s/\*//g; @@ -296,44 +341,7 @@ sub load_cresults { } else { $where_clause = {'-and' => $and_terms}; } - - my $hits = $e->json_query({ - "from" => "acmc", - "select" => {"acmc" => ['id']}, - "where" => $where_clause - }); - - $results = $e->json_query({ - "from" => "acmc", - "select" => {"acmc" => [ - 'id', - 'name', - 'course_number', - 'section_number', - 'is_archived', - 'owning_lib' - ]}, - "limit" => $limit, - "offset" => $offset, - "order_by" => {"acmc" => ['id']}, - "where" => $where_clause - }); - for my $result (@$results) { - push @{$ctx->{courses}}, { - id => $result->{id}, - course_number => $result->{course_number}, - section_number => $result->{section_number}, - owning_lib => $result->{owning_lib}, - name => $result->{name}, - is_archived => $result->{is_archived}, - instructors => [] - } - } - - #$ctx->{courses} = $@courses;#[{id=>10, name=>"test", course_number=>"LIT"}]; - $ctx->{hit_count} = @$hits || 0; - #$ctx->{hit_count} = 0; - return Apache2::Const::OK; + return $where_clause; } sub _prepare_course_search { -- 2.11.0