]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/XXXX.data.copy-count-badge.sql
LP#1613730: Add a "Copy Count" rating function for badges
[working/Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.data.copy-count-badge.sql
1 BEGIN;
2
3 CREATE OR REPLACE FUNCTION rating.copy_count(badge_id INT)
4     RETURNS TABLE (record INT, value NUMERIC) AS $f$
5 DECLARE
6     badge   rating.badge_with_orgs%ROWTYPE;
7 BEGIN
8
9     SELECT * INTO badge FROM rating.badge_with_orgs WHERE id = badge_id;
10
11     PERFORM rating.precalc_bibs_by_copy(badge_id);
12
13     DELETE FROM precalc_copy_filter_bib_list WHERE id NOT IN (
14         SELECT id FROM precalc_filter_bib_list
15             INTERSECT
16         SELECT id FROM precalc_bibs_by_copy_list
17     );
18     ANALYZE precalc_copy_filter_bib_list;
19
20     RETURN QUERY
21      SELECT f.id::INT AS bib,
22             COUNT(f.copy)::NUMERIC
23       FROM  precalc_copy_filter_bib_list f
24             JOIN asset.copy cp ON (f.copy = cp.id)
25             JOIN asset.call_number cn ON (cn.id = cp.call_number)
26       WHERE cn.owning_lib = ANY (badge.orgs) GROUP BY 1;
27
28 END;
29 $f$ LANGUAGE PLPGSQL STRICT;
30
31 INSERT INTO rating.popularity_parameter (name, func, require_percentile) VALUES ('Copy Count', 'rating.copy_count', TRUE);
32
33 COMMIT;
34