-- CreateTable CREATE TABLE `Product` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(191) NOT NULL, `normalizedName` VARCHAR(191) NOT NULL, `category` VARCHAR(191) NULL, `canonicalName` VARCHAR(191) NULL, `isActive` BOOLEAN NOT NULL DEFAULT true, `deletedAt` DATETIME(3) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, UNIQUE INDEX `Product_normalizedName_key`(`normalizedName`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `InventoryItem` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `productId` INTEGER NOT NULL, `quantity` DECIMAL(10, 2) NOT NULL, `unit` VARCHAR(191) NOT NULL, `brand` VARCHAR(191) NULL, `location` VARCHAR(191) NULL, `priority` INTEGER NULL, `purchaseDate` DATETIME(3) NULL, `opened` BOOLEAN NULL, `shelfNote` VARCHAR(191) NULL, `suitableFor` VARCHAR(191) NULL, `isOnSale` BOOLEAN NULL, `priceLevel` INTEGER NULL, `bestBeforeDate` DATETIME(3) NULL, `proteinType` VARCHAR(191) NULL, `isLeftover` BOOLEAN NULL, `comment` VARCHAR(191) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, INDEX `InventoryItem_productId_idx`(`productId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `InventoryConsumption` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `inventoryItemId` INTEGER NOT NULL, `amountUsed` DECIMAL(10, 2) NOT NULL, `comment` VARCHAR(191) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Recipe` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(191) NOT NULL, `description` VARCHAR(191) NULL, `instructions` TEXT NULL, `imageUrl` VARCHAR(191) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `RecipeIngredient` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `recipeId` INTEGER NOT NULL, `productId` INTEGER NOT NULL, `quantity` DECIMAL(10, 2) NOT NULL, `unit` VARCHAR(191) NOT NULL, `note` VARCHAR(191) NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updatedAt` DATETIME(3) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `InventoryItem` ADD CONSTRAINT `InventoryItem_productId_fkey` FOREIGN KEY (`productId`) REFERENCES `Product`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `InventoryConsumption` ADD CONSTRAINT `InventoryConsumption_inventoryItemId_fkey` FOREIGN KEY (`inventoryItemId`) REFERENCES `InventoryItem`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `RecipeIngredient` ADD CONSTRAINT `RecipeIngredient_recipeId_fkey` FOREIGN KEY (`recipeId`) REFERENCES `Recipe`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `RecipeIngredient` ADD CONSTRAINT `RecipeIngredient_productId_fkey` FOREIGN KEY (`productId`) REFERENCES `Product`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;