-- CreateEnum CREATE TYPE "WorkoutSetType" AS ENUM ('TIME', 'WEIGHT', 'REPS', 'BODYWEIGHT', 'NA'); -- CreateEnum CREATE TYPE "WorkoutSetUnit" AS ENUM ('kg', 'lbs'); -- CreateTable CREATE TABLE "WorkoutSession" ( "id" TEXT NOT NULL, "userId" TEXT NOT NULL, "startedAt" TIMESTAMP(3) NOT NULL, "endedAt" TIMESTAMP(3), "duration" INTEGER, CONSTRAINT "WorkoutSession_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "WorkoutSessionExercise" ( "id" TEXT NOT NULL, "workoutSessionId" TEXT NOT NULL, "exerciseId" TEXT NOT NULL, "order" INTEGER NOT NULL, CONSTRAINT "WorkoutSessionExercise_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "WorkoutSet" ( "id" TEXT NOT NULL, "workoutSessionExerciseId" TEXT NOT NULL, "setIndex" INTEGER NOT NULL, "type" "WorkoutSetType" NOT NULL, "valueInt" INTEGER, "valueSec" INTEGER, "unit" "WorkoutSetUnit", "completed" BOOLEAN NOT NULL DEFAULT false, CONSTRAINT "WorkoutSet_pkey" PRIMARY KEY ("id") ); -- AddForeignKey ALTER TABLE "WorkoutSession" ADD CONSTRAINT "WorkoutSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "WorkoutSessionExercise" ADD CONSTRAINT "WorkoutSessionExercise_workoutSessionId_fkey" FOREIGN KEY ("workoutSessionId") REFERENCES "WorkoutSession"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "WorkoutSessionExercise" ADD CONSTRAINT "WorkoutSessionExercise_exerciseId_fkey" FOREIGN KEY ("exerciseId") REFERENCES "exercises"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "WorkoutSet" ADD CONSTRAINT "WorkoutSet_workoutSessionExerciseId_fkey" FOREIGN KEY ("workoutSessionExerciseId") REFERENCES "WorkoutSessionExercise"("id") ON DELETE RESTRICT ON UPDATE CASCADE;