feat: added workouts and workout_sets db tables
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
DROP TABLE IF EXISTS workout_sets;
|
||||
DROP TABLE IF EXISTS workouts;
|
||||
DROP TABLE IF EXISTS template_exercises;
|
||||
DROP TABLE IF EXISTS templates;
|
||||
DROP TABLE IF EXISTS exercises;
|
||||
DROP TABLE IF EXISTS exercises;
|
||||
|
||||
@@ -9,6 +9,7 @@ CREATE TABLE exercises (
|
||||
'pull_up_bar',
|
||||
'dip_bars',
|
||||
'parallettes',
|
||||
'resistance_band'
|
||||
]::TEXT[]),
|
||||
metric TEXT NOT NULL DEFAULT 'reps'
|
||||
CHECK metric IN ('reps', 'seconds'),
|
||||
@@ -42,4 +43,33 @@ CREATE TABLE template_exercises (
|
||||
PRIMARY KEY (template_id, exercise_id)
|
||||
);
|
||||
|
||||
-- todo: workouts, sets
|
||||
|
||||
CREATE TABLE workouts (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name TEXT NOT NULL,
|
||||
template_id UUID REFERENCES templates(id) ON DELETE SET NULL,
|
||||
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
ended_at TIMESTAMPTZ,
|
||||
rpe smallint CHECK (rpe BETWEEN 1 AND 10),
|
||||
bodyweight_kg NUMERIC(5,2),
|
||||
notes TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX workouts_time_idx ON workouts (started_at DESC);
|
||||
|
||||
|
||||
CREATE TABLE workout_sets (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
workout_id UUID NOT NULL REFERENCES workouts(id) ON DELETE CASCADE,
|
||||
exercise_id UUID NOT NULL REFERENCES exercises(id) ON DELETE RESTRICT,
|
||||
logged_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
reps SMALLINT,
|
||||
seconds SMALLINT,
|
||||
weight_kg NUMERIC(5,2),
|
||||
note TEXT,
|
||||
|
||||
CONSTRAINT set_has_number CHECK (reps IS NOT NULL OR seconds IS NOT NULL)
|
||||
);
|
||||
|
||||
CREATE INDEX sets_workout_idx ON workout_sets (workout_id, logged_at);
|
||||
CREATE INDEX sets_exercise_ifx ON workout_sets (exercise_id, logged_at DESC);
|
||||
|
||||
Reference in New Issue
Block a user