INSERT INTO config.internal_flag (name) VALUES ('ingest.disable_metabib_rec_descriptor');
INSERT INTO config.internal_flag (name) VALUES ('ingest.disable_metabib_field_entry');
INSERT INTO config.internal_flag (name) VALUES ('ingest.assume_inserts_only');
+INSERT INTO config.internal_flag (name) VALUES ('serial.rematerialize_on_same_holding_code');
CREATE TABLE config.global_flag (
label TEXT NOT NULL
BEFORE INSERT OR UPDATE ON config.db_patch_dependencies
FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
-INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0670', :eg_version); -- berick/senator
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0738', :eg_version); -- senator/dbwells
CREATE TABLE config.bib_source (
id SERIAL PRIMARY KEY,
);
CREATE TABLE config.metabib_class (
- name TEXT PRIMARY KEY,
- label TEXT NOT NULL UNIQUE
+ name TEXT PRIMARY KEY,
+ label TEXT NOT NULL UNIQUE,
+ buoyant BOOL DEFAULT FALSE NOT NULL,
+ restrict BOOL DEFAULT FALSE NOT NULL
);
CREATE TABLE config.metabib_field (
format TEXT NOT NULL REFERENCES config.xml_transform (name) DEFAULT 'mods33',
search_field BOOL NOT NULL DEFAULT TRUE,
facet_field BOOL NOT NULL DEFAULT FALSE,
- facet_xpath TEXT
+ browse_field BOOL NOT NULL DEFAULT TRUE,
+ browse_xpath TEXT,
+ facet_xpath TEXT,
+ restrict BOOL DEFAULT FALSE NOT NULL
);
COMMENT ON TABLE config.metabib_field IS $$
XPath used for record indexing ingest
name TEXT NOT NULL UNIQUE,
holdable BOOL NOT NULL DEFAULT FALSE,
opac_visible BOOL NOT NULL DEFAULT FALSE,
- copy_active BOOL NOT NULL DEFAULT FALSE
+ copy_active BOOL NOT NULL DEFAULT FALSE,
+ restrict_copy_delete BOOL NOT NULL DEFAULT FALSE
);
COMMENT ON TABLE config.copy_status IS $$
Copy Statuses
);
CREATE TABLE config.coded_value_map (
- id SERIAL PRIMARY KEY,
- ctype TEXT NOT NULL REFERENCES config.record_attr_definition (name) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
- code TEXT NOT NULL,
- value TEXT NOT NULL,
- description TEXT
+ id SERIAL PRIMARY KEY,
+ ctype TEXT NOT NULL REFERENCES config.record_attr_definition (name) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+ code TEXT NOT NULL,
+ value TEXT NOT NULL,
+ description TEXT,
+ opac_visible BOOL NOT NULL DEFAULT TRUE, -- For TPac selectors
+ search_label TEXT,
+ is_simple BOOL NOT NULL DEFAULT FALSE
);
CREATE VIEW config.language_map AS SELECT code, value FROM config.coded_value_map WHERE ctype = 'item_lang';
CREATE VIEW config.audience_map AS SELECT code, value, description FROM config.coded_value_map WHERE ctype = 'audience';
CREATE VIEW config.videorecording_format_map AS SELECT code, value FROM config.coded_value_map WHERE ctype = 'vr_format';
+CREATE OR REPLACE FUNCTION config.update_coded_value_map(in_ctype TEXT, in_code TEXT, in_value TEXT, in_description TEXT DEFAULT NULL, in_opac_visible BOOL DEFAULT NULL, in_search_label TEXT DEFAULT NULL, in_is_simple BOOL DEFAULT NULL, add_only BOOL DEFAULT FALSE) RETURNS VOID AS $f$
+DECLARE
+ current_row config.coded_value_map%ROWTYPE;
+BEGIN
+ -- Look for a current value
+ SELECT INTO current_row * FROM config.coded_value_map WHERE ctype = in_ctype AND code = in_code;
+ -- If we have one..
+ IF FOUND THEN
+ -- Update anything we were handed
+ current_row.value := COALESCE(current_row.value, in_value);
+ current_row.description := COALESCE(current_row.description, in_description);
+ current_row.opac_visible := COALESCE(current_row.opac_visible, in_opac_visible);
+ current_row.search_label := COALESCE(current_row.search_label, in_search_label);
+ current_row.is_simple := COALESCE(current_row.is_simple, in_is_simple);
+ UPDATE config.coded_value_map
+ SET
+ value = current_row.value,
+ description = current_row.description,
+ opac_visible = current_row.opac_visible,
+ search_label = current_row.search_label,
+ is_simple = current_row.is_simple
+ WHERE id = current_row.id;
+ ELSIF NOT add_only THEN
+ INSERT INTO config.coded_value_map(ctype, code, value, description, opac_visible, search_label, is_simple) VALUES
+ (in_ctype, in_code, in_value, in_description, COALESCE(in_opac_visible, TRUE), in_search_label, COALESCE(in_is_simple, FALSE));
+ END IF;
+END;
+$f$ LANGUAGE PLPGSQL;
+
CREATE OR REPLACE FUNCTION oils_tsearch2 () RETURNS TRIGGER AS $$
DECLARE
normalizer RECORD;
END LOOP;
END IF;
- IF REGEXP_REPLACE(VERSION(),E'^.+?(\\d+\\.\\d+).*?$',E'\\1')::FLOAT > 8.2 THEN
- NEW.index_vector = to_tsvector((TG_ARGV[0])::regconfig, value);
- ELSE
- NEW.index_vector = to_tsvector(TG_ARGV[0], value);
+ IF TG_TABLE_NAME::TEXT ~ 'browse_entry$' THEN
+ value := ARRAY_TO_STRING(
+ evergreen.regexp_split_to_array(value, E'\\W+'), ' '
+ );
+ value := public.search_normalize(value);
END IF;
+ NEW.index_vector = to_tsvector((TG_ARGV[0])::regconfig, value);
+
RETURN NEW;
END;
$$ LANGUAGE PLPGSQL;
active BOOLEAN DEFAULT TRUE
);
+CREATE TYPE config.usr_activity_group AS ENUM ('authen','authz','circ','hold','search');
+
+CREATE TABLE config.usr_activity_type (
+ id SERIAL PRIMARY KEY,
+ ewho TEXT,
+ ewhat TEXT,
+ ehow TEXT,
+ label TEXT NOT NULL, -- i18n
+ egroup config.usr_activity_group NOT NULL,
+ enabled BOOL NOT NULL DEFAULT TRUE,
+ transient BOOL NOT NULL DEFAULT FALSE,
+ CONSTRAINT one_of_wwh CHECK (COALESCE(ewho,ewhat,ehow) IS NOT NULL)
+);
+
+CREATE UNIQUE INDEX unique_wwh ON config.usr_activity_type
+ (COALESCE(ewho,''), COALESCE (ewhat,''), COALESCE(ehow,''));
+
+
COMMIT;