-- CreateTable CREATE TABLE `Goods` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `description` TEXT NULL, `sku` VARCHAR(100) NOT NULL, `localSku` VARCHAR(100) NOT NULL, `barcode` VARCHAR(100) NULL, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `updatedAt` TIMESTAMP(0) NOT NULL, `deletedAt` TIMESTAMP(0) NULL, `categoryId` INTEGER NULL, `baseSalePrice` DECIMAL(15, 0) NOT NULL DEFAULT 0.00, UNIQUE INDEX `Goods_localSku_key`(`localSku`), UNIQUE INDEX `Goods_barcode_key`(`barcode`), INDEX `Goods_categoryId_idx`(`categoryId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Good_categories` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `description` TEXT NULL, `imageUrl` VARCHAR(255) NULL, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `updatedAt` TIMESTAMP(0) NOT NULL, `deletedAt` TIMESTAMP(0) NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Customers` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `firstName` VARCHAR(255) NOT NULL, `lastName` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NULL, `mobileNumber` CHAR(11) NOT NULL, `address` TEXT NULL, `isActive` BOOLEAN NOT NULL DEFAULT true, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `updatedAt` TIMESTAMP(0) NOT NULL, `deletedAt` TIMESTAMP(0) NULL, UNIQUE INDEX `Customers_mobileNumber_key`(`mobileNumber`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Trigger_Logs` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `message` TEXT NOT NULL, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `name` TEXT NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Sales_Invoices` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `code` VARCHAR(100) NOT NULL, `totalAmount` DECIMAL(15, 2) NOT NULL, `description` TEXT NULL, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `updatedAt` TIMESTAMP(0) NOT NULL, `customerId` INTEGER NULL, UNIQUE INDEX `Sales_Invoices_code_key`(`code`), INDEX `Sales_Invoices_customerId_idx`(`customerId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Sales_Invoice_Items` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `count` DECIMAL(10, 0) NOT NULL, `unitPrice` DECIMAL(15, 2) NOT NULL DEFAULT 0.00, `totalAmount` DECIMAL(15, 2) NOT NULL DEFAULT 0.00, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `invoiceId` INTEGER NOT NULL, `goodId` INTEGER NOT NULL, `serviceId` INTEGER NOT NULL, INDEX `Sales_Invoice_Items_invoiceId_goodId_idx`(`invoiceId`, `goodId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Sales_Invoice_Payments` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `invoiceId` INTEGER NOT NULL, `amount` DECIMAL(15, 2) NOT NULL, `paymentMethod` ENUM('CASH', 'CARD', 'BANK', 'CHECK', 'OTHER') NOT NULL, `paidAt` DATETIME(3) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), INDEX `Sales_Invoice_Payments_invoiceId_idx`(`invoiceId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Services` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `description` TEXT NULL, `sku` VARCHAR(100) NOT NULL, `barcode` VARCHAR(100) NULL, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `updatedAt` TIMESTAMP(0) NOT NULL, `deletedAt` TIMESTAMP(0) NULL, `categoryId` INTEGER NULL, `baseSalePrice` DECIMAL(15, 0) NOT NULL DEFAULT 0.00, UNIQUE INDEX `Services_sku_key`(`sku`), UNIQUE INDEX `Services_barcode_key`(`barcode`), INDEX `Services_categoryId_idx`(`categoryId`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Service_categories` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `description` TEXT NULL, `imageUrl` VARCHAR(255) NULL, `createdAt` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0), `updatedAt` TIMESTAMP(0) NOT NULL, `deletedAt` TIMESTAMP(0) NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `Goods` ADD CONSTRAINT `Goods_categoryId_fkey` FOREIGN KEY (`categoryId`) REFERENCES `Good_categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Sales_Invoices` ADD CONSTRAINT `Sales_Invoices_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `Customers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Sales_Invoice_Items` ADD CONSTRAINT `Sales_Invoice_Items_invoiceId_fkey` FOREIGN KEY (`invoiceId`) REFERENCES `Sales_Invoices`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Sales_Invoice_Items` ADD CONSTRAINT `Sales_Invoice_Items_goodId_fkey` FOREIGN KEY (`goodId`) REFERENCES `Goods`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Sales_Invoice_Items` ADD CONSTRAINT `Sales_Invoice_Items_serviceId_fkey` FOREIGN KEY (`serviceId`) REFERENCES `Services`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Sales_Invoice_Payments` ADD CONSTRAINT `Sales_Invoice_Payments_invoiceId_fkey` FOREIGN KEY (`invoiceId`) REFERENCES `Sales_Invoices`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Services` ADD CONSTRAINT `Services_categoryId_fkey` FOREIGN KEY (`categoryId`) REFERENCES `Service_categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;