-- CreateTable CREATE TABLE `Habit` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `userId` INTEGER NOT NULL, `name` VARCHAR(191) NOT NULL, `period` VARCHAR(191) NOT NULL DEFAULT 'day', `target` INTEGER NOT NULL DEFAULT 1, `color` VARCHAR(191) NOT NULL DEFAULT '#1677ff', `icon` VARCHAR(191) NOT NULL DEFAULT '', `note` VARCHAR(191) NOT NULL DEFAULT '', `archived` BOOLEAN NOT NULL DEFAULT false, `sortOrder` INTEGER NOT NULL DEFAULT 0, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `Habit_userId_archived_sortOrder_idx`(`userId`, `archived`, `sortOrder`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `CheckIn` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `habitId` INTEGER NOT NULL, `userId` INTEGER NOT NULL, `date` VARCHAR(10) NOT NULL, `seq` INTEGER NOT NULL DEFAULT 1, `note` VARCHAR(191) NOT NULL DEFAULT '', `source` VARCHAR(191) NOT NULL DEFAULT 'user', `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), UNIQUE INDEX `CheckIn_habitId_date_seq_key`(`habitId`, `date`, `seq`), INDEX `CheckIn_userId_date_idx`(`userId`, `date`), INDEX `CheckIn_habitId_date_idx`(`habitId`, `date`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `CheckList` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `userId` INTEGER NOT NULL, `title` VARCHAR(191) NOT NULL, `scene` VARCHAR(191) NOT NULL DEFAULT '', `note` VARCHAR(191) NOT NULL DEFAULT '', `archived` BOOLEAN NOT NULL DEFAULT false, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `CheckList_userId_archived_idx`(`userId`, `archived`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `CheckListItem` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `listId` INTEGER NOT NULL, `title` VARCHAR(191) NOT NULL, `note` VARCHAR(191) NOT NULL DEFAULT '', `done` BOOLEAN NOT NULL DEFAULT false, `doneAt` DATETIME(3) NULL, `sortOrder` INTEGER NOT NULL DEFAULT 0, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `CheckListItem_listId_sortOrder_idx`(`listId`, `sortOrder`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `CheckListTemplate` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `userId` INTEGER NULL, `name` VARCHAR(191) NOT NULL, `scene` VARCHAR(191) NOT NULL DEFAULT '', `items` JSON NOT NULL, `builtin` BOOLEAN NOT NULL DEFAULT false, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `CheckListTemplate_userId_builtin_idx`(`userId`, `builtin`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `Habit` ADD CONSTRAINT `Habit_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `CheckIn` ADD CONSTRAINT `CheckIn_habitId_fkey` FOREIGN KEY (`habitId`) REFERENCES `Habit`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `CheckIn` ADD CONSTRAINT `CheckIn_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `CheckList` ADD CONSTRAINT `CheckList_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `CheckListItem` ADD CONSTRAINT `CheckListItem_listId_fkey` FOREIGN KEY (`listId`) REFERENCES `CheckList`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `CheckListTemplate` ADD CONSTRAINT `CheckListTemplate_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;