~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to userdb/users.sql

  • Committer: William Grant
  • Date: 2010-02-15 01:12:46 UTC
  • Revision ID: grantw@unimelb.edu.au-20100215011246-2kxz9ro0gnrvqueo
Document how to tag releases in bzr.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
    subjectid       SERIAL PRIMARY KEY NOT NULL,
29
29
    subj_code       VARCHAR UNIQUE NOT NULL,
30
30
    subj_name       VARCHAR NOT NULL,
31
 
    subj_short_name VARCHAR UNIQUE NOT NULL,
32
 
    url             VARCHAR
 
31
    subj_short_name VARCHAR UNIQUE NOT NULL
33
32
);
34
33
 
35
34
CREATE TABLE semester (
45
44
    offeringid  SERIAL PRIMARY KEY NOT NULL,
46
45
    subject     INT4 REFERENCES subject (subjectid) NOT NULL,
47
46
    semesterid  INTEGER REFERENCES semester (semesterid) NOT NULL,
 
47
    description VARCHAR,
 
48
    url         VARCHAR,
48
49
    groups_student_permissions  VARCHAR NOT NULL DEFAULT 'none',
49
50
    CHECK (groups_student_permissions in ('none', 'invite', 'create')),
50
51
    UNIQUE (subject, semesterid)
56
57
CREATE TABLE project_set (
57
58
    projectsetid  SERIAL PRIMARY KEY NOT NULL,
58
59
    offeringid    INTEGER REFERENCES offering (offeringid) NOT NULL,
59
 
    max_students_per_group  INTEGER NOT NULL DEFAULT 4
 
60
    max_students_per_group  INTEGER
60
61
);
61
62
 
62
63
CREATE TABLE project (
63
64
    projectid   SERIAL PRIMARY KEY NOT NULL,
64
 
    synopsis    VARCHAR,
65
 
    url         VARCHAR,
 
65
    short_name  TEXT NOT NULL,
 
66
    name        TEXT NOT NULL,
 
67
    synopsis    TEXT,
 
68
    url         TEXT,
66
69
    projectsetid  INTEGER REFERENCES project_set (projectsetid) NOT NULL,
67
 
    deadline    TIMESTAMP
 
70
    deadline    TIMESTAMP NOT NULL
68
71
);
69
72
 
 
73
CREATE OR REPLACE FUNCTION check_project_namespacing_insertupdate()
 
74
RETURNS trigger AS '
 
75
    DECLARE
 
76
        oid INTEGER;
 
77
    BEGIN
 
78
        IF TG_OP = ''UPDATE'' THEN
 
79
            IF NEW.projectsetid = OLD.projectsetid AND NEW.short_name = OLD.short_name THEN
 
80
                RETURN NEW;
 
81
            END IF;
 
82
        END IF;
 
83
        SELECT offeringid INTO oid FROM project_set WHERE project_set.projectsetid = NEW.projectsetid;
 
84
        PERFORM 1 FROM project, project_set
 
85
        WHERE project_set.offeringid = oid AND
 
86
              project.projectsetid = project_set.projectsetid AND
 
87
              project.short_name = NEW.short_name;
 
88
        IF found THEN
 
89
            RAISE EXCEPTION ''a project named % already exists in offering ID %'', NEW.short_name, oid;
 
90
        END IF;
 
91
        RETURN NEW;
 
92
    END;
 
93
' LANGUAGE 'plpgsql';
 
94
 
 
95
CREATE TRIGGER check_project_namespacing
 
96
    BEFORE INSERT OR UPDATE ON project
 
97
    FOR EACH ROW EXECUTE PROCEDURE check_project_namespacing_insertupdate();
 
98
 
70
99
CREATE TABLE project_group (
71
100
    groupnm     VARCHAR NOT NULL,
72
101
    groupid     SERIAL PRIMARY KEY NOT NULL,
135
164
);
136
165
 
137
166
CREATE TABLE project_extension (
 
167
    extensionid SERIAL PRIMARY KEY,
138
168
    assessedid  INT4 REFERENCES assessed (assessedid) NOT NULL,
139
169
    deadline    TIMESTAMP NOT NULL,
140
170
    approver    INT4 REFERENCES login (loginid) NOT NULL,
142
172
);
143
173
 
144
174
CREATE TABLE project_submission (
 
175
    submissionid SERIAL PRIMARY KEY,
145
176
    assessedid  INT4 REFERENCES assessed (assessedid) NOT NULL,
146
177
    path        VARCHAR NOT NULL,
147
 
    revision    INT4 NOT NULL
 
178
    revision    INT4 NOT NULL,
 
179
    date_submitted TIMESTAMP NOT NULL,
 
180
    submitter   INT4 REFERENCES login (loginid) NOT NULL
148
181
);
149
182
 
150
183
CREATE TABLE project_mark (