]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Postgres/090.schema.action.sql
schema changes, bringing db up to reality
[Evergreen.git] / Open-ILS / src / sql / Postgres / 090.schema.action.sql
1 DROP SCHEMA action CASCADE;
2
3 BEGIN;
4
5 CREATE SCHEMA action;
6
7 CREATE TABLE action.survey (
8         id              SERIAL  PRIMARY KEY,
9         name            TEXT    NOT NULL UNIQUE,
10         start_date      DATE    NOT NULL DEFAULT NOW(),
11         end_date        DATE    NOT NULL DEFAULT NOW() + '10 years'::INTERVAL,
12         usr_summary     BOOL    NOT NULL DEFAULT FALSE,
13         opac            BOOL    NOT NULL DEFAULT FALSE
14 );
15
16 CREATE TABLE action.survey_question (
17         id              SERIAL  PRIMARY KEY,
18         survey          INT     NOT NULL REFERENCES action.survey,
19         question        TEXT    NOT NULL UNIQUE
20 );
21
22 CREATE TABLE action.survey_answer (
23         id              SERIAL  PRIMARY KEY,
24         question        INT     NOT NULL REFERENCES action.survey_question,
25         answer          TEXT    NOT NULL UNIQUE
26 );
27
28 CREATE TABLE action.survey_response (
29         id              BIGSERIAL       PRIMARY KEY,
30         usr             BIGINT          NOT NULL, -- REFERENCES actor.usr
31         survey          INT             NOT NULL REFERENCES action.survey,
32         question        INT             NOT NULL REFERENCES action.survey_question,
33         answer          INT             NOT NULL REFERENCES action.survey_answer,
34         answer_date     DATE,
35         effective_date  DATE            NOT NULL DEFAULT NOW()::DATE
36 );
37 CREATE FUNCTION action.survey_response_answer_date_fixup () RETURNS TRIGGER AS $$
38 BEGIN
39         NEW.anser_date := NOW()::DATE;
40         RETURN NEW;
41 END;
42 $$ LANGUAGE 'plpgsql';
43 CREATE TRIGGER action_survey_response_answer_date_fixup_tgr
44         BEFORE INSERT ON action.survey_response
45         FOR EACH ROW
46         EXECUTE PROCEDURE action.survey_response_answer_date_fixup ();
47
48 COMMIT;
49