]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Postgres/010.schema.biblio.sql
158a3a4cc5180f9601b9d6a7f7ff296b1d48b03b
[Evergreen.git] / Open-ILS / src / sql / Postgres / 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         tcn_source      TEXT            NOT NULL DEFAULT 'AUTOGEN',
14         tcn_value       TEXT            NOT NULL DEFAULT biblio.next_autogen_tcn_value(),
15         creator         INT             NOT NULL DEFAULT 1,
16         editor          INT             NOT NULL DEFAULT 1,
17         create_date     TIMESTAMP       NOT NULL DEFAULT now(),
18         edit_date       TIMESTAMP       NOT NULL DEFAULT now(),
19         active          BOOL            NOT NULL DEFAULT TRUE,
20         deleted         BOOL            NOT NULL DEFAULT FALSE,
21         source          INT,
22         last_xact_id    TEXT            NOT NULL DEFAULT 'none'
23 );
24 CREATE INDEX biblio_record_entry_creator_idx ON biblio.record_note ( creator );
25 CREATE INDEX biblio_record_entry_editor_idx ON biblio.record_note ( editor );
26 CREATE UNIQUE INDEX biblio_record_unique_tcn ON (tcn_source,tcn_value) WHERE deleted IS FALSE;
27
28 CREATE TABLE biblio.record_mods (
29         id      BIGINT  PRIMARY KEY,
30         mods    TEXT    NOT NULL
31 )
32
33 CREATE TABLE biblio.record_data (
34         id              BIGSERIAL       PRIMARY KEY,
35         owner_doc       BIGINT          NOT NULL,
36         intra_doc_id    INT             NOT NULL,
37         parent_node     INT,
38         node_type       INT             NOT NULL,
39         namespace_uri   TEXT,
40         name            TEXT,
41         value           TEXT,
42         last_xact_id    TEXT            NOT NULL DEFAULT 'none',
43         CONSTRAINT unique_doc_and_id UNIQUE (owner_doc,intra_doc_id)
44 );
45
46 CREATE TABLE biblio.record_note (
47         id              BIGSERIAL       PRIMARY KEY,
48         record          BIGINT          NOT NULL,
49         value           TEXT            NOT NULL,
50         creator         INT             NOT NULL DEFAULT 1,
51         editor          INT             NOT NULL DEFAULT 1,
52         create_date     TIMESTAMP       NOT NULL DEFAULT now(),
53         edit_date       TIMESTAMP       NOT NULL DEFAULT now()
54 );
55 CREATE INDEX biblio_record_note_record_idx ON biblio.record_note ( record );
56 CREATE INDEX biblio_record_note_creator_idx ON biblio.record_note ( creator );
57 CREATE INDEX biblio_record_note_editor_idx ON biblio.record_note ( editor );
58
59 COMMIT;