-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathdb.sql
More file actions
113 lines (86 loc) · 3.76 KB
/
db.sql
File metadata and controls
113 lines (86 loc) · 3.76 KB
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
-- db.sql
-- This is the schema for the database, for reference only.
-- Updated Schema
CREATE TABLE IF NOT EXISTS Template_Workouts (
workout_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
workout_name TEXT NOT NULL UNIQUE
workout_difficulty TEXT NOT NULL
)
CREATE TABLE IF NOT EXISTS Template_Days (
day_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
workout_id INTEGER NOT NULL,
day_name TEXT NOT NULL,
FOREIGN KEY (workout_id) REFERENCES Template_Workouts(workout_id) ON DELETE CASCADE,
UNIQUE(workout_id, day_name)
);
CREATE TABLE IF NOT EXISTS Template_Exercises (
exercise_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
day_id INTEGER NOT NULL,
exercise_name TEXT NOT NULL,
sets INTEGER NOT NULL,
reps INTEGER NOT NULL,
web_link TEXT,
FOREIGN KEY (day_id) REFERENCES Template_Days(day_id) ON DELETE CASCADE,
UNIQUE(day_id, exercise_name)
);
CREATE TABLE IF NOT EXISTS Workouts (
workout_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
workout_name TEXT NOT NULL UNIQUE
);
CREATE TABLE IF NOT EXISTS Days (
day_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
workout_id INTEGER NOT NULL,
day_name TEXT NOT NULL,
FOREIGN KEY (workout_id) REFERENCES Workouts(workout_id) ON DELETE CASCADE,
UNIQUE(workout_id, day_name)
);
CREATE TABLE IF NOT EXISTS Exercises (
exercise_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
day_id INTEGER NOT NULL,
exercise_name TEXT NOT NULL,
sets INTEGER NOT NULL,
reps INTEGER NOT NULL,
web_link TEXT,
muscle_group TEXT,
exercise_notes TEXT,
FOREIGN KEY (day_id) REFERENCES Days(day_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS Workout_Log (
workout_log_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
workout_name TEXT NOT NULL,
day_name TEXT NOT NULL,
workout_date INTEGER NOT NULL,
UNIQUE (workout_date, day_name, workout_name) -- Properly placed UNIQUE constraint
);
CREATE TABLE IF NOT EXISTS Weight_Log (
weight_log_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- Primary Key
workout_log_id INTEGER NOT NULL, -- Foreign Key to Workout_Log
logged_exercise_id INTEGER NOT NULL, -- Foreign Key to Logged_Exercises
exercise_name TEXT NOT NULL, -- Exercise name copied from Logged_Exercises for better redundancy
set_number INTEGER NOT NULL, -- Which set (e.g., Set 1, Set 2)
weight_logged REAL NOT NULL, -- Weight for that set
reps_logged INTEGER NOT NULL, -- Reps for that set
FOREIGN KEY (workout_log_id) REFERENCES Workout_Log(workout_log_id) ON DELETE CASCADE,
FOREIGN KEY (logged_exercise_id) REFERENCES Logged_Exercises(logged_exercise_id),
UNIQUE (workout_log_id, logged_exercise_id, set_number) -- Ensure no duplicate entries for the same set
);
CREATE TABLE IF NOT EXISTS Logged_Exercises (
logged_exercise_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
workout_log_id INTEGER NOT NULL, -- Foreign Key to Workout_Log
exercise_name TEXT NOT NULL, -- Store exercise name
sets INTEGER NOT NULL, -- Store sets at the time of logging
reps INTEGER NOT NULL, -- Store reps at the time of logging
web_link TEXT,
muscle_group TEXT,
exercise_notes TEXT,
FOREIGN KEY (workout_log_id) REFERENCES Workout_Log(workout_log_id) ON DELETE CASCADE
);
ALTER TABLE Workout_Log ADD COLUMN notification_id TEXT;
ALTER TABLE Workout_Log ADD COLUMN completion_time INTEGER;
ALTER TABLE Weight_Log ADD COLUMN completion_time INTEGER;
ALTER TABLE Exercises ADD COLUMN web_link TEXT;
ALTER TABLE Logged_Exercises ADD COLUMN web_link TEXT;
ALTER TABLE Exercises ADD COLUMN muscle_group TEXT;
ALTER TABLE Exercises ADD COLUMN exercise_notes TEXT;
ALTER TABLE Logged_Exercises ADD COLUMN muscle_group INTEGER;
ALTER TABLE Logged_Exercises ADD COLUMN exercise_notes TEXT;