Compare commits

..
7 Commits
@@ -1,6 +1,7 @@
CREATE TABLE exercises ( CREATE TABLE exercises (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL, name TEXT NOT NULL,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
equipment TEXT[] NOT NULL DEFAULT '{}' equipment TEXT[] NOT NULL DEFAULT '{}'
CHECK ( CHECK (
equipment <@ ARRAY [ equipment <@ ARRAY [
@@ -42,12 +43,14 @@ CREATE TABLE template_exercises (
template_id UUID NOT NULL REFERENCES templates(id) ON DELETE CASCADE, template_id UUID NOT NULL REFERENCES templates(id) ON DELETE CASCADE,
exercise_id UUID NOT NULL REFERENCES exercises(id) ON DELETE CASCADE, exercise_id UUID NOT NULL REFERENCES exercises(id) ON DELETE CASCADE,
position SMALLINT NOT NULL, position SMALLINT NOT NULL,
group_no SMALLINT,
target_sets SMALLINT NOT NULL, target_sets SMALLINT NOT NULL,
target_reps SMALLINT, target_reps SMALLINT,
target_seconds SMALLINT, target_seconds SMALLINT,
notes TEXT, notes TEXT,
modified_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (template_id, exercise_id) PRIMARY KEY (template_id, exercise_id),
CONSTRAINT target_has_number CHECK (target_reps IS NOT NULL OR target_seconds IS NOT NULL) CONSTRAINT target_has_number CHECK (target_reps IS NOT NULL OR target_seconds IS NOT NULL)
); );
@@ -69,9 +72,9 @@ CREATE TABLE workouts (
template_id UUID REFERENCES templates(id) ON DELETE SET NULL, template_id UUID REFERENCES templates(id) ON DELETE SET NULL,
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
ended_at TIMESTAMPTZ, ended_at TIMESTAMPTZ,
rpe smallint CHECK (rpe BETWEEN 1 AND 10), notes TEXT,
notes TEXT modified_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
modified_at TIMESTAMPTZ NOT NULL DEFAULT NOW() deleted_at TIMESTAMPTZ
); );
CREATE INDEX workouts_time_idx ON workouts (started_at DESC); CREATE INDEX workouts_time_idx ON workouts (started_at DESC);
@@ -85,10 +88,12 @@ CREATE TABLE workout_sets (
reps SMALLINT, reps SMALLINT,
seconds SMALLINT, seconds SMALLINT,
weight_kg NUMERIC(5,2), weight_kg NUMERIC(5,2),
rpe SMALLINT CHECK (rpe BETWEEN 1 AND 10),
type TEXT NOT NULL DEFAULT 'working' type TEXT NOT NULL DEFAULT 'working'
CHECK (metric IN ('warm-up', 'working', 'drop')), CHECK (type IN ('warm-up', 'working', 'drop')),
note TEXT, note TEXT,
modified_at TIMESTAMPTZ NOT NULL DEFAULT NOW() modified_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMPTZ,
CONSTRAINT set_has_number CHECK (reps IS NOT NULL OR seconds IS NOT NULL) CONSTRAINT set_has_number CHECK (reps IS NOT NULL OR seconds IS NOT NULL)
); );