203 lines
7.6 KiB
SQL
203 lines
7.6 KiB
SQL
-- 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;
|