-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsql.py
134 lines (102 loc) · 2.85 KB
/
sql.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
"""SQL Commands"""
# functions for creating the tables in sql
CREATE_STUDENT = """
CREATE TABLE IF NOT EXISTS Student(
id INTEGER,
name TEXT,
age INTEGER,
year_enrolled INTEGER,
graduating_year INTEGER,
class INTEGER,
PRIMARY KEY(id),
FOREIGN KEY(class) REFERENCES Class(id)
); """
CREATE_CLASS = """
CREATE TABLE IF NOT EXISTS Class(
id INTEGER,
name INTEGER,
level TEXT CHECK (level in ('JC1', 'JC2')),
PRIMARY KEY(id)
); """
CREATE_SUBJECT = """
CREATE TABLE IF NOT EXISTS Subject(
id INTEGER,
name TEXT CHECK (name in
('GP', 'MATH', 'FM', 'COMP', 'PHY', 'CHEM',
'ECONS', 'BIO', 'GEO', 'HIST', 'ELIT', 'ART',
'CLTRANS', 'CL', 'ML', 'TL', 'CLL', 'CLB',
'PW', 'PUNJABI', 'HINDI', 'BENGALESE', 'JAPANESE')),
level TEXT CHECK (level in ('H1', 'H2', 'H3')),
PRIMARY KEY(id)
); """
CREATE_CLUB = """
CREATE TABLE IF NOT EXISTS Club(
id INTEGER,
name TEXT,
PRIMARY KEY(id)
); """
CREATE_ACTIVITY = """
CREATE TABLE IF NOT EXISTS Activity(
id INTEGER,
name TEXT,
start_date TEXT,
end_date TEXT,
description TEXT,
PRIMARY KEY(id)
); """
CREATE_STUDENT_SUBJECT = """
CREATE TABLE IF NOT EXISTS Student_Subject(
student_id INTEGER,
subject_id INTEGER,
PRIMARY KEY(student_id, subject_id),
FOREIGN KEY(student_id) REFERENCES Student(id),
FOREIGN KEY(subject_id) REFERENCES Subject(id)
); """
CREATE_MEMBERSHIP = """
CREATE TABLE IF NOT EXISTS Membership(
student_id INTEGER,
club_id INTEGER,
role TEXT DEFAULT 'Member',
PRIMARY KEY(student_id, club_id),
FOREIGN KEY(student_id) REFERENCES Student(id),
FOREIGN KEY(club_id) REFERENCES Club(id)
); """
CREATE_PARTICIPATION = """
CREATE TABLE IF NOT EXISTS Participation(
student_id INTEGER,
club_id INTEGER,
activity_id INTEGER,
category TEXT CHECK (category in ('Achievement', 'Enrichment', 'Leadership', 'Service')),
role TEXT DEFAULT 'Participant',
award TEXT,
hours INTEGER,
PRIMARY KEY(student_id, club_id, activity_id),
FOREIGN KEY(student_id) REFERENCES Student(id),
FOREIGN KEY(club_id) REFERENCES Club(id),
FOREIGN KEY(activity_id) REFERENCES Activity(id)
); """
# functions for parameterised insertion for the different tables
INSERT_STUDENT = """
INSERT INTO Student VALUES (?, ?, ?, ?, ?, ?)
;"""
INSERT_CLASS = """
INSERT INTO Class VALUES (?, ?, ?)
;"""
INSERT_SUBJECT = """
INSERT INTO Subject VALUES (?, ?, ?)
;"""
INSERT_CLUB = """
INSERT INTO Club VALUES (?, ?)
;"""
INSERT_ACTIVITY = """
INSERT INTO Activity VALUES (?, ?, ?, ?, ?)
;"""
INSERT_STUDENT_SUBJECT = """
INSERT INTO Student_subject VALUES (?, ?)
;"""
INSERT_MEMBERSHIP = """
INSERT INTO Membership VALUES (?, ?, ?)
;"""
INSERT_PARTICIPATION = """
INSERT INTO Participation VALUES (?, ?, ?, ?, ?, ?, ?)
;"""