Initial commit
This commit is contained in:
62
migrations/000002_create_workouts_tables.up.sql
Normal file
62
migrations/000002_create_workouts_tables.up.sql
Normal file
@@ -0,0 +1,62 @@
|
||||
CREATE TABLE exercise_categories (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name VARCHAR(100) NOT NULL UNIQUE,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE exercises (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
category_id UUID NULL REFERENCES exercise_categories(id) ON DELETE RESTRICT,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
|
||||
);
|
||||
|
||||
CREATE INDEX idx_exercises_category_id ON exercises(category_id);
|
||||
|
||||
CREATE TABLE workouts (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NULL,
|
||||
notes TEXT,
|
||||
workout_date TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_workouts_user_id ON workouts(user_id);
|
||||
CREATE INDEX idx_workouts_workout_date ON workouts(workout_date);
|
||||
|
||||
CREATE TABLE workout_exercises (
|
||||
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,
|
||||
notes TEXT,
|
||||
order_index INT,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_workout_exercises_workout_id ON workout_exercises(workout_id);
|
||||
CREATE INDEX idx_workout_exercises_exercise_id ON workout_exercises(exercise_id);
|
||||
|
||||
CREATE TABLE exercise_sets (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
workout_exercise_id UUID NOT NULL REFERENCES workout_exercises(id) ON DELETE CASCADE,
|
||||
set_number INT NOT NULL,
|
||||
reps INT,
|
||||
weight DECIMAL(10,2),
|
||||
weight_unit VARCHAR(10),
|
||||
duration_seconds INTEGER,
|
||||
distance DECIMAL(10,2),
|
||||
distance_unit VARCHAR(10),
|
||||
notes TEXT,
|
||||
rate_perceived_exertion INT,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX idx_exercise_sets_workout_exercise_id ON exercise_sets(workout_exercise_id);
|
||||
Reference in New Issue
Block a user