]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/sql/Pg/015.schema.staging.sql
LP#1638299: Stamping upgrade scripts for authority infrastructure work
[working/Evergreen.git] / Open-ILS / src / sql / Pg / 015.schema.staging.sql
1 DROP SCHEMA IF EXISTS staging CASCADE;
2
3 BEGIN;
4
5 CREATE SCHEMA staging;
6
7 CREATE TABLE staging.user_stage (
8         row_id                  BIGSERIAL PRIMARY KEY,
9         row_date                TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
10         usrname                 TEXT NOT NULL,
11         profile                 TEXT,
12         email                   TEXT,
13         passwd                  TEXT,
14         ident_type              INT DEFAULT 3,
15         first_given_name        TEXT,
16         second_given_name       TEXT,
17         family_name             TEXT,
18         day_phone               TEXT,
19         evening_phone           TEXT,
20         home_ou                 INT DEFAULT 2,
21         dob                     TEXT,
22         complete                BOOL DEFAULT FALSE,
23         requesting_usr          INT REFERENCES actor.usr(id) ON DELETE SET NULL
24 );
25
26 CREATE TABLE staging.card_stage ( -- for new library barcodes
27         row_id          BIGSERIAL PRIMARY KEY,
28         row_date        TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
29         usrname         TEXT NOT NULL,
30         barcode         TEXT NOT NULL,
31         complete        BOOL DEFAULT FALSE
32 );
33
34 CREATE TABLE staging.mailing_address_stage (
35         row_id          BIGSERIAL PRIMARY KEY,
36         row_date        TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
37         usrname         TEXT NOT NULL,  -- user's SIS barcode, for linking
38         street1         TEXT,
39         street2         TEXT,
40         city            TEXT NOT NULL DEFAULT '',
41         county          TEXT,
42         state           TEXT,
43         country         TEXT NOT NULL DEFAULT 'US',
44         post_code       TEXT NOT NULL,
45         complete        BOOL DEFAULT FALSE
46 );
47
48 CREATE TABLE staging.billing_address_stage (
49         LIKE staging.mailing_address_stage INCLUDING DEFAULTS
50 );
51
52 ALTER TABLE staging.billing_address_stage ADD PRIMARY KEY (row_id);
53
54 CREATE TABLE staging.statcat_stage (
55         row_id          BIGSERIAL PRIMARY KEY,
56         row_date    TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
57         usrname         TEXT NOT NULL,
58         statcat         TEXT NOT NULL, -- for things like 'Year of study'
59         value           TEXT NOT NULL, -- and the value, such as 'Freshman'
60         complete        BOOL DEFAULT FALSE
61 );
62
63 CREATE TABLE staging.setting_stage (
64         row_id          BIGSERIAL PRIMARY KEY,
65         row_date        TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
66         usrname         TEXT NOT NULL,
67         setting         TEXT NOT NULL,
68         value           TEXT NOT NULL,
69         complete        BOOL DEFAULT FALSE
70 );
71
72 -- stored procedure for deleting expired pending patrons
73 CREATE OR REPLACE FUNCTION staging.purge_pending_users() RETURNS VOID AS $$
74 DECLARE
75     org_id INT;
76     intvl TEXT;
77 BEGIN
78     FOR org_id IN SELECT DISTINCT(home_ou) FROM staging.user_stage LOOP
79
80         SELECT INTO intvl value FROM 
81             actor.org_unit_ancestor_setting(
82                 'opac.pending_user_expire_interval', org_id);
83
84         CONTINUE WHEN intvl IS NULL OR intvl ILIKE 'null';
85
86         -- de-JSON-ify the string
87         SELECT INTO intvl TRIM(BOTH '"' FROM intvl);
88
89         DELETE FROM staging.user_stage 
90             WHERE home_ou = org_id AND row_date + intvl::INTERVAL < NOW();
91
92     END LOOP;
93 END;
94 $$ LANGUAGE PLPGSQL;
95
96 COMMIT;
97