-- CreateTable CREATE TABLE `user` ( `id` VARCHAR(191) NOT NULL, `name` TEXT NOT NULL, `email` VARCHAR(191) NOT NULL, `emailVerified` BOOLEAN NOT NULL DEFAULT false, `image` TEXT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, UNIQUE INDEX `user_email_key`(`email`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `session` ( `id` VARCHAR(191) NOT NULL, `expiresAt` DATETIME(3) NOT NULL, `token` VARCHAR(191) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, `ipAddress` TEXT NULL, `userAgent` TEXT NULL, `userId` VARCHAR(191) NOT NULL, INDEX `session_userId_idx`(`userId`(191)), UNIQUE INDEX `session_token_key`(`token`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `account` ( `id` VARCHAR(191) NOT NULL, `accountId` TEXT NOT NULL, `providerId` TEXT NOT NULL, `userId` VARCHAR(191) NOT NULL, `accessToken` TEXT NULL, `refreshToken` TEXT NULL, `idToken` TEXT NULL, `accessTokenExpiresAt` DATETIME(3) NULL, `refreshTokenExpiresAt` DATETIME(3) NULL, `scope` TEXT NULL, `password` TEXT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `account_userId_idx`(`userId`(191)), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `verification` ( `id` VARCHAR(191) NOT NULL, `identifier` TEXT NOT NULL, `value` TEXT NOT NULL, `expiresAt` DATETIME(3) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `verification_identifier_idx`(`identifier`(191)), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Exercise` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(191) NOT NULL, `muscleGroup` VARCHAR(191) NOT NULL, `SFR` DECIMAL(65, 30) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `MesoCycle` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(191) NOT NULL, `totalWeeks` INTEGER NOT NULL, `currentWeek` INTEGER NOT NULL, `isAsync` BOOLEAN NOT NULL, `userId` VARCHAR(191) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `MesoCycleDay` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `weekday` VARCHAR(191) NULL, `orderIndex` INTEGER NOT NULL, `mesoCycleId` INTEGER NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `MesoCycleExercise` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `startingSets` INTEGER NOT NULL, `orderIndex` INTEGER NOT NULL, `mesoCycleDayId` INTEGER NOT NULL, `exerciseId` INTEGER NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `WorkoutSession` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `weekNumber` INTEGER NOT NULL, `isDeload` BOOLEAN NOT NULL, `completedAt` DATETIME(3) NULL, `mesoCycleDayId` INTEGER NOT NULL, `userId` VARCHAR(191) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `ExerciseLog` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `sets` INTEGER NOT NULL, `reps` INTEGER NOT NULL, `weight` DECIMAL(65, 30) NOT NULL, `workoutSessionId` INTEGER NOT NULL, `mesoCycleExerciseId` INTEGER NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `SessionFeedback` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `question` VARCHAR(191) NOT NULL, `answer` VARCHAR(191) NOT NULL, `exerciseLogId` INTEGER NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `session` ADD CONSTRAINT `session_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `account` ADD CONSTRAINT `account_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `MesoCycle` ADD CONSTRAINT `MesoCycle_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `MesoCycleDay` ADD CONSTRAINT `MesoCycleDay_mesoCycleId_fkey` FOREIGN KEY (`mesoCycleId`) REFERENCES `MesoCycle`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `MesoCycleExercise` ADD CONSTRAINT `MesoCycleExercise_mesoCycleDayId_fkey` FOREIGN KEY (`mesoCycleDayId`) REFERENCES `MesoCycleDay`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `MesoCycleExercise` ADD CONSTRAINT `MesoCycleExercise_exerciseId_fkey` FOREIGN KEY (`exerciseId`) REFERENCES `Exercise`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `WorkoutSession` ADD CONSTRAINT `WorkoutSession_mesoCycleDayId_fkey` FOREIGN KEY (`mesoCycleDayId`) REFERENCES `MesoCycleDay`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `WorkoutSession` ADD CONSTRAINT `WorkoutSession_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `ExerciseLog` ADD CONSTRAINT `ExerciseLog_workoutSessionId_fkey` FOREIGN KEY (`workoutSessionId`) REFERENCES `WorkoutSession`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `ExerciseLog` ADD CONSTRAINT `ExerciseLog_mesoCycleExerciseId_fkey` FOREIGN KEY (`mesoCycleExerciseId`) REFERENCES `MesoCycleExercise`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `SessionFeedback` ADD CONSTRAINT `SessionFeedback_exerciseLogId_fkey` FOREIGN KEY (`exerciseLogId`) REFERENCES `ExerciseLog`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;