From 8f2b42036e7b1d7638986d31d97fe9eb3dc622ee Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Thu, 11 May 2017 17:26:43 -0400 Subject: [PATCH] webstaff: implement fetcher for pattern templates The method open-ils.serial.pattern_template.retrieve.at takes a org unit ID and returns the set of patterns visible to it. Signed-off-by: Galen Charlton --- .../src/perlmods/lib/OpenILS/Application/Serial.pm | 36 ++++++++++++++++++++++ .../XXXX.schema.serial_pattern_templates.sql | 11 +++++++ 2 files changed, 47 insertions(+) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm index 50113ebc52..75f915ab0c 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Serial.pm @@ -3894,4 +3894,40 @@ sub summary_test { return; } +__PACKAGE__->register_method( + "method" => "fetch_pattern_templates", + "api_name" => "open-ils.serial.pattern_template.retrieve.at", + "stream" => 1, + "signature" => { + "desc" => q{Return the set of pattern templates that are + visible to the specified library.}, + "params" => [ + {"desc" => "Authtoken", "type" => "string"}, + {"desc" => "OU ID", "type" => "number"}, + ], + return => { + desc => "stream of pattern templates", + type => "object", class => "spt" + } + } +); + +sub fetch_pattern_templates { + my ($self, $client, $auth, $org_unit) = @_; + + my $e = new_editor("authtoken" => $auth); + return $e->die_event unless $e->checkauth; + + my $patterns = $e->json_query({ + from => [ 'serial.pattern_templates_visible_to' => $org_unit ] + }); +$logger->info(Dumper($patterns)); use Data::Dumper; + + $client->respond($e->retrieve_serial_pattern_template($_->{id})) + foreach (@$patterns); + + $e->disconnect; + return undef; +} + 1; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.serial_pattern_templates.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.serial_pattern_templates.sql index 3a8ed1a295..3921c35eba 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.serial_pattern_templates.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.serial_pattern_templates.sql @@ -11,4 +11,15 @@ CREATE TABLE serial.pattern_template ( ); CREATE INDEX serial_pattern_template_name_idx ON serial.pattern_template (evergreen.lowercase(name)); +CREATE OR REPLACE FUNCTION serial.pattern_templates_visible_to(org_unit INT) RETURNS SETOF serial.pattern_template AS $func$ +BEGIN + RETURN QUERY SELECT * + FROM serial.pattern_template spt + WHERE ( + SELECT ARRAY_AGG(id) + FROM actor.org_unit_descendants(spt.owning_lib, spt.share_depth) + ) @@ org_unit::TEXT::QUERY_INT; +END; +$func$ LANGUAGE PLPGSQL; + -- COMMIT; -- 2.11.0