feat: SQLite migrations and db pool with FK pragma
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
CREATE TABLE courses (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
semester TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE tutors (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
email TEXT UNIQUE NOT NULL,
|
||||
password_hash TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE tutor_courses (
|
||||
tutor_id INTEGER REFERENCES tutors(id),
|
||||
course_id INTEGER REFERENCES courses(id),
|
||||
PRIMARY KEY (tutor_id, course_id)
|
||||
);
|
||||
|
||||
CREATE TABLE students (
|
||||
id INTEGER PRIMARY KEY,
|
||||
course_id INTEGER NOT NULL REFERENCES courses(id),
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE rooms (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
layout_json TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE sessions (
|
||||
id INTEGER PRIMARY KEY,
|
||||
course_id INTEGER NOT NULL REFERENCES courses(id),
|
||||
week_nr INTEGER NOT NULL,
|
||||
date TEXT NOT NULL CHECK (date GLOB '????-??-??'),
|
||||
UNIQUE(course_id, week_nr)
|
||||
);
|
||||
|
||||
CREATE TABLE slots (
|
||||
id INTEGER PRIMARY KEY,
|
||||
session_id INTEGER NOT NULL REFERENCES sessions(id),
|
||||
room_id INTEGER REFERENCES rooms(id),
|
||||
tutor_id INTEGER NOT NULL REFERENCES tutors(id),
|
||||
start_time TEXT NOT NULL,
|
||||
end_time TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'closed',
|
||||
code TEXT UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE attendances (
|
||||
id INTEGER PRIMARY KEY,
|
||||
slot_id INTEGER NOT NULL REFERENCES slots(id),
|
||||
student_id INTEGER NOT NULL REFERENCES students(id),
|
||||
seat_id TEXT,
|
||||
checked_in_at TEXT NOT NULL CHECK (checked_in_at GLOB '????-??-??T??:??:??*'),
|
||||
UNIQUE(slot_id, student_id),
|
||||
UNIQUE(slot_id, seat_id)
|
||||
);
|
||||
|
||||
CREATE TABLE notes (
|
||||
id INTEGER PRIMARY KEY,
|
||||
slot_id INTEGER NOT NULL REFERENCES slots(id),
|
||||
student_id INTEGER NOT NULL REFERENCES students(id),
|
||||
tutor_id INTEGER NOT NULL REFERENCES tutors(id),
|
||||
content TEXT NOT NULL DEFAULT '',
|
||||
updated_at TEXT NOT NULL CHECK (updated_at GLOB '????-??-??T??:??:??*'),
|
||||
UNIQUE(slot_id, student_id, tutor_id)
|
||||
);
|
||||
Reference in New Issue
Block a user