-- CreateTable CREATE TABLE `User` ( `id` VARCHAR(191) NOT NULL, `email` VARCHAR(191) NOT NULL, `password` VARCHAR(191) NOT NULL, `name` VARCHAR(191) NULL, `role` ENUM('ADMIN', 'SALES_PERSON') NOT NULL DEFAULT 'SALES_PERSON', `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 `Attendance` ( `id` VARCHAR(191) NOT NULL, `userId` VARCHAR(191) NOT NULL, `date` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `checkInTime` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `checkOutTime` DATETIME(3) NULL, `checkInLat` DOUBLE NULL, `checkInLng` DOUBLE NULL, `checkInLoc` VARCHAR(191) NULL, `checkOutLat` DOUBLE NULL, `checkOutLng` DOUBLE NULL, `checkOutLoc` VARCHAR(191) NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Client` ( `id` VARCHAR(191) NOT NULL, `name` VARCHAR(191) NOT NULL, `phone` VARCHAR(191) NOT NULL, `email` VARCHAR(191) NULL, `address` VARCHAR(191) NULL, `lat` DOUBLE NULL, `lng` DOUBLE NULL, `landmark` VARCHAR(191) NULL, `status` ENUM('LEAD', 'PROSPECT', 'CUSTOMER', 'CLOSED') NOT NULL DEFAULT 'LEAD', `assignedTo` 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 `Meeting` ( `id` VARCHAR(191) NOT NULL, `title` VARCHAR(191) NOT NULL, `description` VARCHAR(191) NULL, `date` DATETIME(3) NOT NULL, `clientId` VARCHAR(191) NOT NULL, `createdBy` VARCHAR(191) NOT NULL, `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `Product` ( `id` VARCHAR(191) NOT NULL, `name` VARCHAR(191) NOT NULL, `description` VARCHAR(191) NULL, `price` DOUBLE NOT 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 `Enquiry` ( `id` VARCHAR(191) NOT NULL, `clientId` VARCHAR(191) NOT NULL, `userId` VARCHAR(191) NOT NULL, `conversation` TEXT NULL, `status` VARCHAR(191) NOT NULL DEFAULT 'OPEN', `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 `Followup` ( `id` VARCHAR(191) NOT NULL, `clientId` VARCHAR(191) NOT NULL, `enquiryId` VARCHAR(191) NULL, `userId` VARCHAR(191) NOT NULL, `date` DATETIME(3) NOT NULL, `notes` VARCHAR(191) NULL, `status` VARCHAR(191) NOT NULL DEFAULT 'PENDING', `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 `Expense` ( `id` VARCHAR(191) NOT NULL, `userId` VARCHAR(191) NOT NULL, `amount` DOUBLE NOT NULL, `description` VARCHAR(191) NOT NULL, `date` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `imageUrl` VARCHAR(191) NULL, `status` ENUM('PENDING', 'APPROVED', 'REJECTED', 'REIMBURSED') NOT NULL DEFAULT 'PENDING', `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 `Incentive` ( `id` VARCHAR(191) NOT NULL, `userId` VARCHAR(191) NOT NULL, `targetAmount` DOUBLE NOT NULL, `achievedAmount` DOUBLE NOT NULL DEFAULT 0, `rewardAmount` DOUBLE NULL, `type` ENUM('DAILY', 'MONTHLY') NOT NULL, `startDate` DATETIME(3) NOT NULL, `endDate` DATETIME(3) NOT 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 `Quote` ( `id` VARCHAR(191) NOT NULL, `enquiryId` VARCHAR(191) NOT NULL, `userId` VARCHAR(191) NOT NULL, `items` JSON NOT NULL, `totalAmount` DOUBLE NOT NULL, `status` ENUM('DRAFT', 'SENT', 'ACCEPTED', 'REJECTED') NOT NULL DEFAULT 'DRAFT', `pdfUrl` 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 `_EnquiryToProduct` ( `A` VARCHAR(191) NOT NULL, `B` VARCHAR(191) NOT NULL, UNIQUE INDEX `_EnquiryToProduct_AB_unique`(`A`, `B`), INDEX `_EnquiryToProduct_B_index`(`B`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `Attendance` ADD CONSTRAINT `Attendance_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Client` ADD CONSTRAINT `Client_assignedTo_fkey` FOREIGN KEY (`assignedTo`) REFERENCES `User`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Meeting` ADD CONSTRAINT `Meeting_clientId_fkey` FOREIGN KEY (`clientId`) REFERENCES `Client`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Meeting` ADD CONSTRAINT `Meeting_createdBy_fkey` FOREIGN KEY (`createdBy`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Enquiry` ADD CONSTRAINT `Enquiry_clientId_fkey` FOREIGN KEY (`clientId`) REFERENCES `Client`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Enquiry` ADD CONSTRAINT `Enquiry_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Followup` ADD CONSTRAINT `Followup_clientId_fkey` FOREIGN KEY (`clientId`) REFERENCES `Client`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Followup` ADD CONSTRAINT `Followup_enquiryId_fkey` FOREIGN KEY (`enquiryId`) REFERENCES `Enquiry`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Followup` ADD CONSTRAINT `Followup_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Expense` ADD CONSTRAINT `Expense_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Incentive` ADD CONSTRAINT `Incentive_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Quote` ADD CONSTRAINT `Quote_enquiryId_fkey` FOREIGN KEY (`enquiryId`) REFERENCES `Enquiry`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `Quote` ADD CONSTRAINT `Quote_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `_EnquiryToProduct` ADD CONSTRAINT `_EnquiryToProduct_A_fkey` FOREIGN KEY (`A`) REFERENCES `Enquiry`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `_EnquiryToProduct` ADD CONSTRAINT `_EnquiryToProduct_B_fkey` FOREIGN KEY (`B`) REFERENCES `Product`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;