1 DROP SCHEMA action CASCADE;
7 CREATE TABLE action.survey (
9 owner INT NOT NULL REFERENCES actor.org_unit (id),
11 description TEXT NOT NULL,
12 start_date DATE NOT NULL DEFAULT NOW(),
13 end_date DATE NOT NULL DEFAULT NOW() + '10 years'::INTERVAL,
14 usr_summary BOOL NOT NULL DEFAULT FALSE,
15 opac BOOL NOT NULL DEFAULT FALSE,
16 poll BOOL NOT NULL DEFAULT FALSE,
17 required BOOL NOT NULL DEFAULT FALSE
19 CREATE UNIQUE INDEX asv_once_per_owner_idx ON action.survey (owner,name);
21 CREATE TABLE action.survey_question (
22 id SERIAL PRIMARY KEY,
23 survey INT NOT NULL REFERENCES action.survey,
24 question TEXT NOT NULL
27 CREATE TABLE action.survey_answer (
28 id SERIAL PRIMARY KEY,
29 question INT NOT NULL REFERENCES action.survey_question,
33 CREATE TABLE action.survey_response (
34 id BIGSERIAL PRIMARY KEY,
35 usr INT, -- REFERENCES actor.usr
36 survey INT NOT NULL REFERENCES action.survey,
37 question INT NOT NULL REFERENCES action.survey_question,
38 answer INT NOT NULL REFERENCES action.survey_answer,
40 effective_date DATE NOT NULL DEFAULT NOW()::DATE
42 CREATE OR REPLACE FUNCTION action.survey_response_answer_date_fixup () RETURNS TRIGGER AS '
44 NEW.answer_date := NOW()::DATE;
48 CREATE TRIGGER action_survey_response_answer_date_fixup_tgr
49 BEFORE INSERT ON action.survey_response
51 EXECUTE PROCEDURE action.survey_response_answer_date_fixup ();
53 CREATE TABLE action.circulation (
54 target_copy BIGINT NOT NULL, -- asset.copy.id
55 circ_lib INT NOT NULL, -- actor.org_unit.id
56 duration_rule TEXT NOT NULL, -- name of "circ duration" rule
57 duration INTERVAL NOT NULL, -- derived from "circ duration" rule
58 renewal_remaining INT NOT NULL, -- derived from "circ duration" rule
59 recuring_fine_rule TEXT NOT NULL, -- name of "circ fine" rule
60 recuring_fine NUMERIC(6,2) NOT NULL, -- derived from "circ fine" rule
61 max_fine_rule TEXT NOT NULL, -- name of "max fine" rule
62 max_fine NUMERIC(6,2) NOT NULL, -- derived from "max fine" rule
63 fine_interval INTERVAL NOT NULL DEFAULT '1 day'::INTERVAL, -- derived from "circ fine" rule
64 stop_fines TEXT CHECK (stop_fines IN ('CHECKIN','CLAIMSRETURNED','LOST','MAXFINES'))
65 ) INHERITS (money.billable_xact);
66 CREATE INDEX circ_open_xacts_idx ON action.circulation (usr) WHERE xact_finish IS NULL;