Skip to content

Commit f8845d9

Browse files
committed
Fix threading in database and add temporary frontend
1 parent 88bb2c6 commit f8845d9

23 files changed

Lines changed: 535 additions & 184 deletions

api/auth/controller.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33

44
def create_account(username, numeric_identifier, auth_level="student"):
55
account_id = db.create_account(username, numeric_identifier)
6+
print(auth_level)
67
db.add_to_roster(account_id, auth_level)
78
return account_id
Lines changed: 120 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import sqlite3
22

33
from api.database.db_interface import DBInterface
4+
from api.database.relational_db.relational_db_cursor import RelationalDBCursor
45

56
from api.database.relational_db.relational_db_queue import RelationalDBQueue
67
from api.database.relational_db.relational_db_accounts import RelationalDBAccounts
@@ -13,70 +14,130 @@ class RelationalDB(
1314

1415
def __init__(self):
1516
super().__init__()
16-
self.connection = None
17-
self.cursor = None
18-
self.filename = "moh.sqlite"
19-
self.connect()
17+
self.filename = "../moh.sqlite"
18+
self.initialize()
2019

21-
def connect(self):
22-
self.connection = sqlite3.connect(self.filename)
23-
self.cursor = self.connection.cursor()
20+
def initialize(self):
21+
with self.cursor() as c:
22+
c.execute(
23+
"""
24+
CREATE TABLE IF NOT EXISTS users
25+
(
26+
user_id
27+
INTEGER
28+
PRIMARY
29+
KEY,
30+
preferred_name
31+
VARCHAR
32+
(
33+
64
34+
),
35+
last_name VARCHAR
36+
(
37+
64
38+
),
39+
ubit VARCHAR
40+
(
41+
16
42+
) UNIQUE,
43+
person_num INTEGER UNIQUE,
44+
course_role VARCHAR
45+
(
46+
16
47+
)
48+
);
49+
"""
50+
)
2451

25-
self.cursor.execute(
26-
"""
27-
CREATE TABLE IF NOT EXISTS users (
28-
user_id INTEGER PRIMARY KEY,
29-
preferred_name VARCHAR(64),
30-
last_name VARCHAR(64),
31-
ubit VARCHAR(16) UNIQUE,
32-
person_num INTEGER UNIQUE,
33-
course_role VARCHAR(16)
34-
);
35-
"""
36-
)
52+
c.execute(
53+
"""
54+
CREATE TABLE IF NOT EXISTS queue
55+
(
56+
user_id
57+
INTEGER
58+
UNIQUE,
59+
joined
60+
TEXT
61+
DEFAULT (
62+
datetime
63+
(
64+
'now',
65+
'localtime'
66+
))
67+
);
68+
"""
69+
)
3770

38-
self.cursor.execute(
39-
"""
40-
CREATE TABLE IF NOT EXISTS queue (
41-
user_id INTEGER UNIQUE,
42-
joined TEXT DEFAULT (datetime('now', 'localtime'))
43-
);
44-
"""
45-
)
71+
c.execute(
72+
"""
73+
CREATE TABLE IF NOT EXISTS auth
74+
(
75+
user_id
76+
INTEGER
77+
UNIQUE,
78+
auth_token
79+
VARCHAR
80+
(
81+
255
82+
),
83+
pw VARCHAR
84+
(
85+
255
86+
),
87+
expires_at TEXT DEFAULT
88+
(
89+
datetime
90+
(
91+
'now',
92+
'+30 days'
93+
))
94+
);
95+
"""
96+
)
4697

47-
self.cursor.execute(
48-
"""
49-
CREATE TABLE IF NOT EXISTS auth (
50-
user_id INTEGER UNIQUE,
51-
auth_token VARCHAR(255),
52-
pw VARCHAR(255),
53-
expires_at TEXT DEFAULT (datetime('now', '+30 days'))
54-
);
55-
"""
56-
)
98+
c.execute(
99+
"""
100+
CREATE TABLE IF NOT EXISTS visits
101+
(
102+
visit_id
103+
INTEGER
104+
PRIMARY
105+
KEY,
106+
student_id
107+
INTEGER,
108+
ta_id
109+
INTEGER,
110+
session_start
111+
TEXT
112+
DEFAULT (
113+
datetime
114+
(
115+
'now',
116+
'localtime'
117+
)),
118+
session_end TEXT,
119+
session_end_reason TEXT,
120+
enqueue_time TEXT
121+
);
122+
"""
123+
)
57124

58-
self.cursor.execute(
59-
"""
60-
CREATE TABLE IF NOT EXISTS visits (
61-
visit_id INTEGER PRIMARY KEY,
62-
student_id INTEGER,
63-
ta_id INTEGER,
64-
session_start TEXT DEFAULT (datetime('now', 'localtime')),
65-
session_end TEXT,
66-
session_end_reason TEXT,
67-
enqueue_time TEXT
68-
);
69-
"""
70-
)
125+
def cursor(self):
126+
return RelationalDBCursor(self)
71127

72-
self.connection.commit()
128+
def connect(self):
129+
pass
73130

74131
def add_to_roster(self, user_id, role):
75-
self.cursor.execute(
76-
"""
77-
UPDATE users
78-
SET course_role = ? WHERE user_id = ?
79-
""",
80-
(role, user_id),
81-
)
82-
self.connection.commit()
132+
133+
with self.cursor() as cursor:
134+
cursor.execute(
135+
"""
136+
UPDATE users
137+
SET course_role = ?
138+
WHERE user_id = ?
139+
""",
140+
(role, user_id),
141+
)
142+
143+

0 commit comments

Comments
 (0)