-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdbinit.py
175 lines (167 loc) · 5.36 KB
/
dbinit.py
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
import os
import sys
import psycopg2 as dbapi2
INIT_STATEMENTS = [
"""CREATE EXTENSION IF NOT EXISTS pgcrypto
""",
"""CREATE TABLE IF NOT EXISTS COMPETITION (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
DATE DATE NOT NULL,
COUNTRY VARCHAR NOT NULL,
DESCRIPTION VARCHAR NOT NULL,
REWARD VARCHAR NOT NULL
)
""",
"""CREATE TABLE IF NOT EXISTS TEAM(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
NUM_MEMBERS INTEGER NOT NULL,
FOUND_YEAR VARCHAR NOT NULL,
EMAIL VARCHAR NOT NULL,
ADRESS VARCHAR NOT NULL,
LOGO VARCHAR NOT NULL,
COMPETITION_ID INTEGER REFERENCES COMPETITION(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS SUBTEAM(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
TEAM_ID INTEGER REFERENCES TEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS STATUS (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL
)
""",
"""CREATE TABLE IF NOT EXISTS MAJOR (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL
)
""",
"""CREATE TABLE IF NOT EXISTS AUTH_TYPE(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL
)
""",
"""CREATE TABLE IF NOT EXISTS PERSON(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
AGE INTEGER NOT NULL,
PHONE VARCHAR NOT NULL,
CV VARCHAR NOT NULL,
EMAIL VARCHAR NOT NULL,
CLASS INTEGER NOT NULL,
AUTH_TYPE INTEGER NOT NULL,
STATUS INTEGER NOT NULL,
TEAM_ID INTEGER REFERENCES TEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE,
SUBTEAM_ID INTEGER REFERENCES SUBTEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE,
MAJOR_ID INTEGER REFERENCES MAJOR(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS VEHICLE_TYPE(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL
)
""",
"""CREATE TABLE IF NOT EXISTS MEMBER (
ID SERIAL PRIMARY KEY,
ROLE VARCHAR NOT NULL,
ENTRYDATE DATE NOT NULL,
ACTIVE BOOL NOT NULL,
PICTURE VARCHAR NOT NULL,
ADDRESS VARCHAR NOT NULL,
PERSON_ID INTEGER REFERENCES PERSON(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS SPONSORTYPE (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL
)
""",
"""CREATE TABLE IF NOT EXISTS SPONSOR (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
DESCRIPTION VARCHAR NOT NULL,
FIELD VARCHAR NOT NULL,
COUNTRY VARCHAR NOT NULL,
LOGO VARCHAR NOT NULL,
ADDRESS VARCHAR NOT NULL,
TYPE_ID INTEGER REFERENCES SPONSORTYPE(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS SPONSORINDEX(
ID SERIAL PRIMARY KEY,
SPONSOR_ID INTEGER REFERENCES SPONSOR(ID) ON DELETE SET NULL ON UPDATE CASCADE,
TEAM_ID INTEGER REFERENCES TEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS DESIGN(
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
YEAR VARCHAR NOT NULL,
MAXSPEED VARCHAR NOT NULL,
WEIGHT VARCHAR NOT NULL,
DURATION VARCHAR NOT NULL,
IS_AUTONOMOUS BOOL NOT NULL,
TEAM_ID INTEGER REFERENCES TEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE,
TYPE_OF_VEHICLE INTEGER REFERENCES VEHICLE_TYPE(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS USERS (
USERNAME VARCHAR PRIMARY KEY,
PASSWORD VARCHAR NOT NULL,
MEMBER_ID INTEGER REFERENCES MEMBER(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS SCHEDULE (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
DEADLINE DATE NOT NULL,
DONE BOOL NOT NULL,
DESCRIPTION VARCHAR NOT NULL,
BUDGET VARCHAR NOT NULL,
MEMBER_ID INTEGER REFERENCES MEMBER(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS EQUIPMENT (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
LINK VARCHAR NOT NULL,
PURCHASEDATE DATE NOT NULL,
AVAILABLE BOOL NOT NULL,
PICTURE VARCHAR NOT NULL,
TEAM_ID INTEGER REFERENCES TEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE,
SUBTEAM_ID INTEGER REFERENCES SUBTEAM(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS TUTORIAL (
ID SERIAL PRIMARY KEY,
NAME VARCHAR NOT NULL,
AREA VARCHAR NOT NULL,
DESCRIPTION VARCHAR NOT NULL,
LINK VARCHAR NOT NULL,
ISVIDEO BOOL NOT NULL,
MEMBER_ID INTEGER REFERENCES MEMBER(ID) ON DELETE SET NULL ON UPDATE CASCADE
)
""",
"""CREATE TABLE IF NOT EXISTS ADMIN (
ID SERIAL PRIMARY KEY,
USERNAME VARCHAR,
PASSWORD VARCHAR
)
"""
]
def initialize(url):
with dbapi2.connect(url) as connection:
cursor = connection.cursor()
for statement in INIT_STATEMENTS:
cursor.execute(statement)
cursor.close()
if __name__ == "__main__":
url = os.getenv("DATABASE_URL")
if url is None:
print("Usage: DATABASE_URL=url python dbinit.py") # , file=sys.stderr)
sys.exit(1)
initialize(url)