Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION evergreen.rank_cp_status(STATUS INT)
- RETURNS INTEGER AS $$
- WITH totally_available AS (
- SELECT id, 0 AS avail_rank
- FROM config.copy_status
- WHERE opac_visible IS TRUE
- AND copy_active IS TRUE
- AND id != 1 -- "Checked out"
- ), almost_available AS (
- SELECT id, 10 AS avail_rank
- FROM config.copy_status
- WHERE holdable IS TRUE
- AND opac_visible IS TRUE
- AND copy_active IS FALSE
- OR id = 1 -- "Checked out"
- )
- SELECT COALESCE(
- (SELECT avail_rank FROM totally_available WHERE $1 IN (id)),
- (SELECT avail_rank FROM almost_available WHERE $1 IN (id)),
- 100
- );
- $$ LANGUAGE SQL STABLE;
- CREATE OR REPLACE FUNCTION evergreen.ranked_volumes(
- bibid BIGINT[],
- ouid INT,
- depth INT DEFAULT NULL,
- slimit HSTORE DEFAULT NULL,
- soffset HSTORE DEFAULT NULL,
- pref_lib INT DEFAULT NULL,
- includes TEXT[] DEFAULT NULL::TEXT[]
- ) RETURNS TABLE (id BIGINT, name TEXT, label_sortkey TEXT, rank BIGINT) AS $$
- SELECT ua.id, ua.name, ua.label_sortkey, MIN(ua.rank) AS rank FROM (
- SELECT acn.id, aou.name, acn.label_sortkey,
- evergreen.rank_ou(aou.id, $2, $6), evergreen.rank_cp_status(acp.STATUS),
- RANK() OVER w
- FROM asset.call_number acn
- JOIN asset.copy acp ON (acn.id = acp.call_number)
- JOIN actor.org_unit_descendants( $2, COALESCE(
- $3, (
- SELECT depth
- FROM actor.org_unit_type aout
- INNER JOIN actor.org_unit ou ON ou_type = aout.id
- WHERE ou.id = $2
- ), $6)
- ) AS aou ON (acp.circ_lib = aou.id)
- WHERE acn.record = ANY ($1)
- AND acn.deleted IS FALSE
- AND acp.deleted IS FALSE
- AND CASE WHEN ('exclude_invisible_acn' = ANY($7)) THEN
- EXISTS (
- SELECT 1
- FROM asset.opac_visible_copies
- WHERE copy_id = acp.id AND record = acn.record
- ) ELSE TRUE END
- GROUP BY acn.id, acp.STATUS, aou.name, acn.label_sortkey, aou.id
- WINDOW w AS (
- ORDER BY evergreen.rank_ou(aou.id, $2, $6), evergreen.rank_cp_status(acp.STATUS)
- )
- ) AS ua
- GROUP BY ua.id, ua.name, ua.label_sortkey
- ORDER BY rank, ua.name, ua.label_sortkey
- LIMIT ($4 -> 'acn')::INT
- OFFSET ($5 -> 'acn')::INT;
- $$
- LANGUAGE SQL STABLE;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement