From 8bd135d50041fede1b03ebc06ed40fab96f9e2db Mon Sep 17 00:00:00 2001 From: miker Date: Fri, 4 Apr 2008 03:56:23 +0000 Subject: [PATCH] adding bib_level filter support git-svn-id: svn://svn.open-ils.org/ILS/trunk@9217 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../OpenILS/Application/Storage/Publisher/metabib.pm | 9 ++++++++- Open-ILS/src/sql/Pg/300.schema.staged_search.sql | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm index 9e06dc155a..f244644d39 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm @@ -2324,7 +2324,7 @@ sub staged_fts { die "No search arguments were passed to ".$self->api_name; } - my (@statuses,@types,@forms,@lang,@aud,@lit_form,@vformats); + my (@statuses,@types,@forms,@lang,@aud,@lit_form,@vformats,@bib_level); if ($args{available}) { @statuses = (0,7); @@ -2360,6 +2360,11 @@ sub staged_fts { @types = @$t; } + if (my $b = $args{bib_level}) { + $b = [$b] if (!ref($b)); + @bib_level = @$b; + } + if (my $v = $args{vr_format}) { $v = [$v] if (!ref($v)); @vformats = @$v; @@ -2423,6 +2428,7 @@ sub staged_fts { my $param_types = '$${' . join(',', map { s/\$//go; $_ } @types) . '}$$'; my $param_forms = '$${' . join(',', map { s/\$//go; $_ } @forms) . '}$$'; my $param_vformats = '$${' . join(',', map { s/\$//go; $_ } @vformats) . '}$$'; + my $param_bib_level = '$${' . join(',', map { s/\$//go; $_ } @bib_level) . '}$$'; my $param_pref_lang = $args{preferred_language}; $param_pref_lang =~ s/\$//go; $param_pref_lang = '$$'.$param_pref_lang.'$$'; my $param_pref_lang_multiplier = $args{preferred_language_weight}; $param_pref_lang_multiplier ||= 'NULL'; my $param_sort = $args{'sort'}; $param_sort =~ s/\$//go; $param_sort = '$$'.$param_sort.'$$'; @@ -2446,6 +2452,7 @@ sub staged_fts { $param_types, $param_forms, $param_vformats, + $param_bib_level, $param_pref_lang, $param_pref_lang_multiplier, $param_sort, diff --git a/Open-ILS/src/sql/Pg/300.schema.staged_search.sql b/Open-ILS/src/sql/Pg/300.schema.staged_search.sql index 049a8dc85e..847a24308b 100644 --- a/Open-ILS/src/sql/Pg/300.schema.staged_search.sql +++ b/Open-ILS/src/sql/Pg/300.schema.staged_search.sql @@ -59,6 +59,7 @@ CREATE OR REPLACE FUNCTION search.staged_fts ( param_types TEXT[], param_forms TEXT[], param_vformats TEXT[], + param_bib_level TEXT[], param_pref_lang TEXT, param_pref_lang_multiplier REAL, param_sort TEXT, @@ -333,6 +334,10 @@ BEGIN where_clause = where_clause || $$ AND mrd.vr_format IN ('$$ || array_to_string(param_vformats, $$','$$) || $$') $$; END IF; + IF param_bib_level IS NOT NULL AND array_upper(param_bib_level, 1) > 0 THEN + where_clause = where_clause || $$ AND mrd.bib_level IN ('$$ || array_to_string(param_bib_level, $$','$$) || $$') $$; + END IF; + core_rel_query := select_clause || from_clause || where_clause || ' GROUP BY 1 ORDER BY 4' || CASE WHEN sort_desc THEN ' DESC' ELSE ' ASC' END || ';'; --RAISE NOTICE 'Base Query: %', core_rel_query; -- 2.43.2