Add more allowed characters in support issue titles
[hcoop/zz_old/portal.git] / tables.sql
CommitLineData
5146e435 1CREATE TABLE MemberApp(
2 id INTEGER PRIMARY KEY,
3 name TEXT NOT NULL,
4 rname TEXT NOT NULL,
5 gname TEXT,
6 email TEXT NOT NULL,
7 forward BOOLEAN NOT NULL,
8 uses TEXT NOT NULL,
9 other TEXT NOT NULL,
10 passwd TEXT NOT NULL,
11 status INTEGER NOT NULL,
12 applied TIMESTAMP NOT NULL,
13 ipaddr TEXT,
14 confirmed TIMESTAMP,
15 decided TIMESTAMP,
16 msg TEXT NOT NULL);
17
18CREATE SEQUENCE MemberAppSeq START 1;
19
8d347a33 20CREATE TABLE Balance(
21 id INTEGER PRIMARY KEY,
22 name TEXT NOT NULL,
23 amount REAL NOT NULL);
24
25CREATE SEQUENCE BalanceSeq START 1;
26
27INSERT INTO Balance
28 (id, name, amount) VALUES
29 (0, 'adam', 0.0);
30
31CREATE TABLE WebUser(
32 id INTEGER PRIMARY KEY,
33 name TEXT NOT NULL,
34 rname TEXT NOT NULL,
35 bal INTEGER NOT NULL,
36 joined TIMESTAMP NOT NULL,
5146e435 37 app INTEGER NOT NULL,
892e3ea1 38 shares INTEGER NOT NULL,
5146e435 39 FOREIGN KEY (bal) REFERENCES Balance(id) ON DELETE CASCADE,
40 FOREIGN KEY (app) REFERENCES MemberApp(id) ON DELETE CASCADE);
8d347a33 41
42CREATE SEQUENCE WebUserSeq START 1;
43
44INSERT INTO WebUser
3d009713 45 (id, name, rname, bal, joined) VALUES
46 (0, 'adam', 'Adam Chlipala', 0, CURRENT_TIMESTAMP);
8d347a33 47
48CREATE TABLE WebGroup(
49 id INTEGER PRIMARY KEY,
50 name TEXT NOT NULL);
51
3d009713 52CREATE SEQUENCE WebGroupSeq START 2;
8d347a33 53
54INSERT INTO WebGroup
55 (id, name) VALUES
56 (0, 'root');
57
3d009713 58INSERT INTO WebGroup
59 (id, name) VALUES
60 (1, 'paying');
61
8d347a33 62CREATE TABLE Membership(
63 grp INTEGER NOT NULL,
64 usr INTEGER NOT NULL,
65 PRIMARY KEY (grp, usr),
66 FOREIGN KEY (grp) REFERENCES WebGroup(id) ON DELETE CASCADE,
67 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
68
69INSERT INTO Membership
70 (grp, usr) VALUES
71 (0, 0);
72
3d009713 73INSERT INTO Membership
74 (grp, usr) VALUES
75 (1, 0);
76
8d347a33 77CREATE TABLE Transaction(
78 id INTEGER PRIMARY KEY,
79 descr TEXT NOT NULL,
80 amount REAL NOT NULL,
81 d DATE NOT NULL,
82 stamp TIMESTAMP NOT NULL);
83
84CREATE SEQUENCE TransactionSeq START 1;
85
86CREATE TABLE Charge(
87 trn INTEGER NOT NULL,
88 usr INTEGER NOT NULL,
89 amount REAL NOT NULL,
90 PRIMARY KEY (trn, usr),
91 FOREIGN KEY (trn) REFERENCES Transaction(id) ON DELETE CASCADE,
92 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
93
57c305c1 94CREATE TABLE Poll(
95 id INTEGER PRIMARY KEY,
96 usr INTEGER NOT NULL,
97 title TEXT NOT NULL,
98 descr TEXT NOT NULL,
99 starts DATE NOT NULL,
100 ends DATE NOT NULL,
101 votes INTEGER NOT NULL,
102 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
103
104CREATE SEQUENCE PollSeq START 1;
105
106CREATE TABLE PollChoice(
107 id INTEGER PRIMARY KEY,
108 pol INTEGER NOT NULL,
109 seq REAL NOT NULL,
110 descr TEXT NOT NULL,
111 FOREIGN KEY (pol) REFERENCES Poll(id) ON DELETE CASCADE);
112
113CREATE SEQUENCE PollChoiceSeq START 1;
114
115CREATE TABLE Vote(
116 usr INTEGER NOT NULL,
117 cho INTEGER NOT NULL,
118 PRIMARY KEY (usr, cho),
119 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
120 FOREIGN KEY (cho) REFERENCES PollChoice(id) ON DELETE CASCADE);
121
46b0c2df 122CREATE TABLE ContactKind(
123 id INTEGER PRIMARY KEY,
124 name TEXT NOT NULL,
125 url BOOLEAN NOT NULL,
126 urlPrefix TEXT,
127 urlPostfix TEXT);
57c305c1 128
46b0c2df 129CREATE SEQUENCE ContactKindSeq START 1;
8d347a33 130
46b0c2df 131CREATE TABLE Contact(
369e1577 132 id INTEGER PRIMARY KEY,
46b0c2df 133 usr INTEGER NOT NULL,
134 knd INTEGER NOT NULL,
135 v TEXT NOT NULL,
136 priv INTEGER NOT NULL,
46b0c2df 137 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
138 FOREIGN KEY (knd) REFERENCES ContactKind(id) ON DELETE CASCADE);
369e1577 139
140CREATE SEQUENCE ContactSeq START 1;
51520441 141
142CREATE TABLE Location(
143 id INTEGER PRIMARY KEY,
144 parent INTEGER,
145 name TEXT NOT NULL,
146 FOREIGN KEY (parent) REFERENCES Location(id) ON DELETE CASCADE);
147
148CREATE SEQUENCE LocationSeq START 1;
149
150CREATE TABLE Lives(
151 usr INTEGER NOT NULL,
152 loc INTEGER NOT NULL,
153 PRIMARY KEY (usr, loc),
154 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
155 FOREIGN KEY (loc) REFERENCES Location(id) ON DELETE CASCADE);
29c3cc58 156
157CREATE TABLE Link(
158 id INTEGER PRIMARY KEY,
159 usr INTEGER NOT NULL,
160 title TEXT NOT NULL,
161 url TEXT NOT NULL,
162 descr TEXT NOT NULL,
163 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
164
165CREATE SEQUENCE LinkSeq START 1;
166
c7311141 167CREATE TABLE SupCategory(
168 id INTEGER PRIMARY KEY,
169 grp INTEGER NOT NULL,
170 name TEXT NOT NULL,
171 descr TEXT NOT NULL,
172 FOREIGN KEY (grp) REFERENCES WebGroup(id) ON DELETE CASCADE);
173
174CREATE SEQUENCE SupCategorySeq START 1;
175
176CREATE TABLE SupIssue(
177 id INTEGER PRIMARY KEY,
178 usr INTEGER NOT NULL,
179 cat INTEGER NOT NULL,
180 title TEXT NOT NULL,
181 priv BOOLEAN NOT NULL,
182 status INTEGER NOT NULL,
183 stamp TIMESTAMP NOT NULL,
1365f9a0 184 pstamp TIMESTAMP,
185 cstamp TIMESTAMP,
c7311141 186 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
187 FOREIGN KEY (cat) REFERENCES SupCategory(id) ON DELETE CASCADE);
188
189CREATE SEQUENCE SupIssueSeq START 1;
190
191CREATE TABLE SupPost(
192 id INTEGER PRIMARY KEY,
193 usr INTEGER NOT NULL,
194 iss INTEGER NOT NULL,
195 body TEXT NOT NULL,
196 stamp TIMESTAMP NOT NULL,
197 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
198 FOREIGN KEY (iss) REFERENCES SupIssue(id) ON DELETE CASCADE);
199
200CREATE SEQUENCE SupPostSeq START 1;
201
202CREATE TABLE SupSubscription(
203 usr INTEGER NOT NULL,
204 cat INTEGER NOT NULL,
205 PRIMARY KEY (usr, cat),
206 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
207 FOREIGN KEY (cat) REFERENCES SupCategory(id) ON DELETE CASCADE);
208
8023de7b 209CREATE TABLE WebNode(
210 id INTEGER PRIMARY KEY,
211 name TEXT NOT NULL,
212 descr TEXT NOT NULL,
213 debian TEXT NOT NULL);
214
215INSERT INTO WebNode (id, name, descr, debian)
216 VALUES (0, 'fyodor', 'old server', 'testing');
217INSERT INTO WebNode (id, name, descr, debian)
218 VALUES (1, 'deleuze', 'main server', 'stable');
219INSERT INTO WebNode (id, name, descr, debian)
220 VALUES (2, 'mire', 'member web server', 'stable');
221
36d5f176 222CREATE TABLE Apt(
223 id INTEGER PRIMARY KEY,
224 usr INTEGER NOT NULL,
8023de7b 225 node INTEGER NOT NULL,
ff2b7604 226 data TEXT NOT NULL,
36d5f176 227 msg TEXT NOT NULL,
228 status INTEGER NOT NULL,
229 stamp TIMESTAMP NOT NULL,
cac002c5 230 cstamp TIMESTAMP,
9396e2cf 231 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
232 FOREIGN KEY (node) REFERENCES WebNode(id) ON DELETE CASCADE);
c7311141 233
36d5f176 234CREATE SEQUENCE AptSeq START 1;
ff2b7604 235
236CREATE TABLE Domain(
237 id INTEGER PRIMARY KEY,
238 usr INTEGER NOT NULL,
239 data TEXT NOT NULL,
240 msg TEXT NOT NULL,
241 status INTEGER NOT NULL,
242 stamp TIMESTAMP NOT NULL,
cac002c5 243 cstamp TIMESTAMP,
ff2b7604 244 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
245
246CREATE SEQUENCE DomainSeq START 1;
78304862 247
248CREATE TABLE MailingList(
249 id INTEGER PRIMARY KEY,
250 usr INTEGER NOT NULL,
251 data TEXT NOT NULL,
252 msg TEXT NOT NULL,
253 status INTEGER NOT NULL,
254 stamp TIMESTAMP NOT NULL,
cac002c5 255 cstamp TIMESTAMP,
78304862 256 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
257
258CREATE SEQUENCE MailingListSeq START 1;
566fd712 259
260CREATE TABLE DirectoryPref(
261 usr INTEGER PRIMARY KEY,
262 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
20a679fc 263
20a679fc 264CREATE TABLE AppVote(
265 app INTEGER NOT NULL,
266 usr INTEGER NOT NULL,
267 PRIMARY KEY (app, usr),
268 FOREIGN KEY (app) REFERENCES MemberApp(id) ON DELETE CASCADE,
269 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
270
ea455810 271CREATE VIEW WebUserPaying
892e3ea1 272 AS SELECT id, name, rname, bal, joined, app, shares
ea455810 273 FROM WebUser
274 JOIN (SELECT usr FROM Membership JOIN WebGroup
275 ON grp = WebGroup.id
892e3ea1 276 AND WebGroup.name = 'paying') AS bob
ea455810 277 ON usr = WebUser.id;
278
47bc9315 279CREATE VIEW WebUserActive
892e3ea1 280 AS SELECT id, name, rname, bal, joined, app, shares
47bc9315 281 FROM WebUser
282 LEFT OUTER JOIN (SELECT usr FROM Membership JOIN WebGroup
add44c00 283 ON grp = WebGroup.id AND (WebGroup.name IN ('retired', 'phantom'))) AS mem
47bc9315 284 ON usr = WebUser.id
47bc9315 285 WHERE usr IS NULL;
286
add44c00 287CREATE TABLE RollCall(
288 id INTEGER PRIMARY KEY,
289 title TEXT NOT NULL,
290 msg TEXT NOT NULL,
291 started TIMESTAMP NOT NULL);
292
293CREATE SEQUENCE RollCallSeq START 1;
294
295CREATE TABLE RollCallEntry(
296 rol INTEGER NOT NULL,
297 usr INTEGER NOT NULL,
298 code TEXT NOT NULL,
299 responded TIMESTAMP,
300 PRIMARY KEY (rol, usr),
301 FOREIGN KEY (rol) REFERENCES RollCall(id) ON DELETE CASCADE,
302 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE);
3ad30cf6 303
304CREATE TABLE Sec(
305 id INTEGER PRIMARY KEY,
306 usr INTEGER NOT NULL,
08e839b2 307 node INTEGER NOT NULL,
3ad30cf6 308 data TEXT NOT NULL,
309 msg TEXT NOT NULL,
310 status INTEGER NOT NULL,
311 stamp TIMESTAMP NOT NULL,
cac002c5 312 cstamp TIMESTAMP,
9396e2cf 313 FOREIGN KEY (usr) REFERENCES WebUser(id) ON DELETE CASCADE,
314 FOREIGN KEY (node) REFERENCES WebNode(id) ON DELETE CASCADE);
3ad30cf6 315
316CREATE SEQUENCE SecSeq START 1;