73 lines
2.1 KiB
SQL
73 lines
2.1 KiB
SQL
-- Add migration script here
|
|
CREATE TYPE exercise_variant AS ENUM ('time', 'number', 'failure');
|
|
|
|
CREATE TABLE exercises (
|
|
exercise_id uuid PRIMARY KEY,
|
|
name varchar NOT NULL,
|
|
description varchar NOT NULL,
|
|
created_at TIMESTAMP DEFAULT now(),
|
|
updated_at TIMESTAMP DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE muscles (
|
|
muscle_id varchar(16) PRIMARY KEY,
|
|
name varchar NOT NULL
|
|
);
|
|
|
|
CREATE TABLE categories (
|
|
category_id varchar(16) PRIMARY KEY,
|
|
name varchar NOT NULL
|
|
);
|
|
|
|
CREATE TABLE workouts (
|
|
workout_id uuid PRIMARY KEY,
|
|
name varchar NOT NULL,
|
|
description varchar NOT NULL,
|
|
created_at TIMESTAMP DEFAULT now(),
|
|
updated_at TIMESTAMP DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE workout_exercises (
|
|
workout_exercises_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
workout_id uuid NOT NULL,
|
|
exercise_id uuid NOT NULL,
|
|
exercise_type exercise_variant NOT NULL,
|
|
position integer NOT NULL,
|
|
sets integer,
|
|
reps integer,
|
|
time integer,
|
|
FOREIGN KEY (workout_id) REFERENCES workouts(workout_id) ON DELETE CASCADE,
|
|
FOREIGN KEY (exercise_id) REFERENCES exercises(exercise_id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE exercise_muscles (
|
|
exercise_id uuid NOT NULL,
|
|
muscle_id varchar(16) NOT NULL,
|
|
PRIMARY KEY (exercise_id, muscle_id),
|
|
FOREIGN KEY (exercise_id) REFERENCES exercises(exercise_id) ON DELETE CASCADE,
|
|
FOREIGN KEY (muscle_id) REFERENCES muscles(muscle_id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE exercise_categories (
|
|
exercise_id uuid NOT NULL,
|
|
category_id varchar(16) NOT NULL,
|
|
PRIMARY KEY (exercise_id, category_id),
|
|
FOREIGN KEY (exercise_id) REFERENCES exercises(exercise_id) ON DELETE CASCADE,
|
|
FOREIGN KEY (category_id) REFERENCES categories(category_id) ON DELETE CASCADE
|
|
);
|
|
|
|
|
|
-- Initialize muscle data
|
|
INSERT INTO muscles (muscle_id, name) VALUES
|
|
('chest', 'Chest'),
|
|
('back', 'Back'),
|
|
('biceps', 'Biceps'),
|
|
('triceps', 'Triceps'),
|
|
('legs', 'Legs'),
|
|
('shoulders', 'Shoulders');
|
|
|
|
-- Initialize caregory data
|
|
INSERT INTO categories (category_id, name) VALUES
|
|
('strength', 'Strength'),
|
|
('cardio', 'Cardio');
|