-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb-init.sql
More file actions
90 lines (74 loc) · 3.04 KB
/
db-init.sql
File metadata and controls
90 lines (74 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-- SQL Statements for generating the Code Mercenary database
-- --- DB-USERS --- --
-- ---------------- --
DROP USER "db-man-public";
DROP USER "db-man-private";
CREATE USER "db-man-public" WITH PASSWORD 'thisisaHorseBatteryStaple';
CREATE USER "db-man-private" WITH PASSWORD 'anotherHorseBatteryStaple';
GRANT CONNECT ON DATABASE "cmerc-db" TO "db-man-public";
GRANT CONNECT ON DATABASE "cmerc-db" TO "db-man-private";
-- --- TYPES --- --
-- ------------- --
CREATE TYPE task_status AS ENUM ('available','started','done');
CREATE TYPE project_dev_status AS ENUM ('interested', 'accepted');
-- --- USERS --- --
-- ------------- --
CREATE TABLE userdata(
username varchar(255) PRIMARY KEY NOT NULL,
isdeveloper boolean DEFAULT TRUE,
isprovider boolean DEFAULT FALSE,
userrating real DEFAULT 0.00,
nratings int DEFAULT 0
);
CREATE TABLE userpassword(
username varchar(255) PRIMARY KEY REFERENCES userdata(username),
hash varchar(255) NOT NULL,
salt char(16) NOT NULL
);
CREATE TABLE usercomments(
commentid bigserial PRIMARY KEY,
commentee varchar(255) NOT NULL REFERENCES userdata(username),
commenter varchar(255) NOT NULL REFERENCES userdata(username),
comment text NOT NULL
);
ALTER TABLE userdata OWNER TO "db-man-public";
ALTER TABLE userpassword OWNER TO "db-man-public";
ALTER TABLE usercomments OWNER TO "db-man-public";
-- --- PROJECTS --- --
-- ---------------- --
CREATE TABLE projectdata(
projectid bigserial PRIMARY KEY,
createddate timestamp with time zone DEFAULT CURRENT_TIMESTAMP,
owner varchar(255) NOT NULL REFERENCES userdata(username),
projectname varchar(255) NOT NULL,
description varchar(1024) NOT NULL,
extendeddescription text ,
projectrating real DEFAULT 0.00,
nratings int DEFAULT 0
);
CREATE TABLE projecttasks(
taskid bigserial PRIMARY KEY,
projectid bigint NOT NULL REFERENCES projectdata(projectid),
parenttaskid bigint REFERENCES projecttasks(taskid),
localtaskid int NOT NULL,
taskname varchar(255) NOT NULL,
description text NOT NULL,
status task_status DEFAULT 'available',
UNIQUE( projectid, localtaskid )
);
CREATE TABLE projectcomments(
commentid bigserial PRIMARY KEY,
projectid bigint NOT NULL REFERENCES projectdata(projectid),
username varchar(255) NOT NULL REFERENCES userdata(username),
comment text NOT NULL
);
-- CREATE TABLE projectdevelopers(
-- username varchar(255) REFERENCES userdata(username),
-- projectid bigint REFERENCES projectdata(projectid),
-- status project_dev_status NOT NULL,
-- PRIMARY KEY ( username, projectid )
-- );
ALTER TABLE projectdata OWNER TO "db-man-public";
ALTER TABLE projecttasks OWNER TO "db-man-public";
ALTER TABLE projectcomments OWNER TO "db-man-public";
-- ALTER TABLE projectdevelopers OWNER TO "db-man-public";