]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/010.schema.biblio.sql
Enable translation of seed values stored in database.
[working/Evergreen.git] / Open-ILS / src / sql / Pg / 010.schema.biblio.sql
1 DROP SCHEMA biblio CASCADE;
2
3 BEGIN;
4 CREATE SCHEMA biblio;
5
6 CREATE SEQUENCE biblio.autogen_tcn_value_seq;
7 CREATE FUNCTION biblio.next_autogen_tcn_value () RETURNS TEXT AS $$
8         BEGIN RETURN nextval('biblio.autogen_tcn_value_seq'::TEXT); END;
9 $$ LANGUAGE PLPGSQL;
10
11 CREATE TABLE biblio.record_entry (
12         id              BIGSERIAL       PRIMARY KEY,
13         creator         INT             NOT NULL DEFAULT 1,
14         editor          INT             NOT NULL DEFAULT 1,
15         source          INT,
16         quality         INT,
17         create_date     TIMESTAMP WITH TIME ZONE        NOT NULL DEFAULT now(),
18         edit_date       TIMESTAMP WITH TIME ZONE        NOT NULL DEFAULT now(),
19         active          BOOL            NOT NULL DEFAULT TRUE,
20         deleted         BOOL            NOT NULL DEFAULT FALSE,
21         fingerprint     TEXT,
22         tcn_source      TEXT            NOT NULL DEFAULT 'AUTOGEN',
23         tcn_value       TEXT            NOT NULL DEFAULT biblio.next_autogen_tcn_value(),
24         marc            TEXT            NOT NULL,
25         last_xact_id    TEXT            NOT NULL
26 );
27 CREATE INDEX biblio_record_entry_creator_idx ON biblio.record_entry ( creator );
28 CREATE INDEX biblio_record_entry_editor_idx ON biblio.record_entry ( editor );
29 CREATE INDEX biblio_record_entry_fp_idx ON biblio.record_entry ( fingerprint );
30 CREATE UNIQUE INDEX biblio_record_unique_tcn ON biblio.record_entry (tcn_value) WHERE deleted IS FALSE;
31
32 CREATE RULE protect_bib_rec_delete AS ON DELETE TO biblio.record_entry DO INSTEAD UPDATE biblio.record_entry SET deleted = TRUE WHERE OLD.id = biblio.record_entry.id;
33
34
35 CREATE TABLE biblio.record_note (
36         id              BIGSERIAL       PRIMARY KEY,
37         record          BIGINT          NOT NULL,
38         value           TEXT            NOT NULL,
39         creator         INT             NOT NULL DEFAULT 1,
40         editor          INT             NOT NULL DEFAULT 1,
41         pub             BOOL            NOT NULL DEFAULT FALSE,
42         create_date     TIMESTAMP WITH TIME ZONE        NOT NULL DEFAULT now(),
43         edit_date       TIMESTAMP WITH TIME ZONE        NOT NULL DEFAULT now()
44 );
45 CREATE INDEX biblio_record_note_record_idx ON biblio.record_note ( record );
46 CREATE INDEX biblio_record_note_creator_idx ON biblio.record_note ( creator );
47 CREATE INDEX biblio_record_note_editor_idx ON biblio.record_note ( editor );
48
49 COMMIT;