]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Postgres/040.schema.asset.sql
81b91293e4379ad66812db57f8dc2ecfd0317b09
[Evergreen.git] / Open-ILS / src / sql / Postgres / 040.schema.asset.sql
1 DROP SCHEMA asset CASCADE;
2
3 BEGIN;
4
5 CREATE SCHEMA asset;
6
7 CREATE TABLE asset.copy (
8         id              BIGSERIAL                       PRIMARY KEY,
9         circ_lib        INT                             NOT NULL REFERENCES actor.org_unit (id),
10         creator         BIGINT                          NOT NULL,
11         create_date     TIMESTAMP WITH TIME ZONE        DEFAULT NOW(),
12         editor          BIGINT                          NOT NULL,
13         edit_date       TIMESTAMP WITH TIME ZONE        DEFAULT NOW(),
14         barcode         TEXT                            UNIQUE NOT NULL,
15         call_number     BIGINT                          NOT NULL,
16         copy_number     INT,
17         holdable        BOOL                            NOT NULL DEFAULT TRUE,
18         available       BOOL                            NOT NULL DEFAULT TRUE, -- was STATUS
19         loan_duration   INT                             NOT NULL CHECK ( loan_duration IN (1,2,3) ),
20         fine_level      INT                             NOT NULL CHECK ( fine_level IN (1,2,3) ),
21         circulate       BOOL                            NOT NULL DEFAULT TRUE,
22         deposit         BOOL                            NOT NULL DEFAULT FALSE,
23         deposit_amount  NUMERIC(6,2)                    NOT NULL DEFAULT 0.00,
24         price           NUMERIC(8,2)                    NOT NULL DEFAULT 0.00,
25         ref             BOOL                            NOT NULL DEFAULT FALSE,
26         circ_modifier   TEXT,
27         circ_as_type    TEXT,
28         opac_visible    BOOL                            NOT NULL DEFAULT TRUE
29 );
30 CREATE INDEX cp_cn_idx ON asset.copy (call_number);
31
32 CREATE TABLE asset.copy_transparency (
33         id              SERIAL          PRIMARY KEY,
34         name            TEXT            NOT NULL,
35         owner           INT             NOT NULL REFERENCES actor.org_unit (id),
36         circ_lib        INT             REFERENCES actor.org_unit (id),
37         holdable        BOOL,
38         loan_duration   INT             CHECK ( loan_duration IN (1,2,3) ),
39         fine_level      INT             CHECK ( fine_level IN (1,2,3) ),
40         circulate       BOOL,
41         deposit         BOOL,
42         deposit_amount  NUMERIC(6,2),
43         ref             BOOL,
44         circ_modifier   TEXT,
45         circ_as_type    TEXT,
46         opac_visible    BOOL
47         CONSTRAINT scte_name_once_per_lib UNIQUE (owner,name)
48 );
49
50 CREATE TABLE asset.copy_tranparency_map (
51         id              BIGSERIAL       PRIMARY KEY,
52         tansparency     INT     NOT NULL REFERENCES asset.copy_transparency (id),
53         target_copy     INT     NOT NULL UNIQUE REFERENCES asset.copy (id)
54 );
55 CREATE INDEX cp_tr_cp_idx ON asset.copy_tranparency_map (tansparency);
56
57 CREATE TABLE asset.stat_cat_entry_transparency_map (
58         id                      BIGSERIAL       PRIMARY KEY,
59         stat_cat                INT             NOT NULL, -- needs ON DELETE CASCADE
60         stat_cat_entry          INT             NOT NULL, -- needs ON DELETE CASCADE
61         owning_transparency     INT             NOT NULL, -- needs ON DELETE CASCADE
62         CONSTRAINT scte_once_per_trans UNIQUE (owning_transparency,stat_cat)
63 );
64
65 CREATE TABLE asset.stat_cat (
66         id              SERIAL  PRIMARY KEY,
67         owner           INT     NOT NULL, -- actor.org_unit.id
68         name            TEXT    NOT NULL,
69         opac_visible    BOOL NOT NULL DEFAULT FALSE,
70         CONSTRAINT sc_once_per_owner UNIQUE (owner,name)
71 );
72
73 CREATE TABLE asset.stat_cat_entry (
74         id              SERIAL  PRIMARY KEY,
75         owner           INT     NOT NULL, -- actor.org_unit.id
76         value           TEXT    NOT NULL,
77         CONSTRAINT sce_once_per_owner UNIQUE (owner,value)
78 );
79
80 CREATE TABLE asset.stat_cat_entry_copy_map (
81         id              BIGSERIAL       PRIMARY KEY,
82         stat_cat        INT             NOT NULL, -- needs ON DELETE CASCADE
83         stat_cat_entry  INT             NOT NULL, -- needs ON DELETE CASCADE
84         owning_copy     BIGINT          NOT NULL, -- needs ON DELETE CASCADE
85         CONSTRAINT sce_once_per_copy UNIQUE (owning_copy,stat_cat)
86 );
87
88 CREATE TABLE asset.copy_note (
89         id              BIGSERIAL                       PRIMARY KEY,
90         owning_copy     BIGINT                          NOT NULL,
91         creator         BIGINT                          NOT NULL,
92         create_date     TIMESTAMP WITH TIME ZONE        DEFAULT NOW(),
93         title           TEXT                            NOT NULL,
94         value           TEXT                            NOT NULL
95 );
96
97 CREATE TABLE asset.call_number (
98         id              bigserial PRIMARY KEY,
99         creator         BIGINT                          NOT NULL,
100         create_date     TIMESTAMP WITH TIME ZONE        DEFAULT NOW(),
101         editor          BIGINT                          NOT NULL,
102         edit_date       TIMESTAMP WITH TIME ZONE        DEFAULT NOW(),
103         record          bigint                          NOT NULL,
104         label           TEXT                            NOT NULL,
105         owning_lib      INT                             NOT NULL,
106         CONSTRAINT asset_call_number_label_once_per_lib UNIQUE (record, owning_lib, label)
107 );
108 CREATE INDEX asset_call_number_record_idx ON asset.call_number (record);
109 CREATE INDEX asset_call_number_creator_idx ON asset.call_number (creator);
110 CREATE INDEX asset_call_number_editor_idx ON asset.call_number (editor);
111
112 CREATE TABLE asset.call_number_note (
113         id              BIGSERIAL                       PRIMARY KEY,
114         call_number     BIGINT                          NOT NULL,
115         creator         BIGINT                          NOT NULL,
116         create_date     TIMESTAMP WITH TIME ZONE        DEFAULT NOW(),
117         title           TEXT                            NOT NULL,
118         value           TEXT                            NOT NULL
119 );
120
121
122 COMMIT;