11import sqlite3
22
33from api .database .db_interface import DBInterface
4+ from api .database .relational_db .relational_db_cursor import RelationalDBCursor
45
56from api .database .relational_db .relational_db_queue import RelationalDBQueue
67from 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