181 lines
7.4 KiB
SQL
181 lines
7.4 KiB
SQL
/*
|
|
Warnings:
|
|
|
|
- A unique constraint covering the columns `[portalEmail]` on the table `Customer` will be added. If there are existing duplicate values, this will fail.
|
|
|
|
*/
|
|
-- AlterTable
|
|
ALTER TABLE `Contract` ADD COLUMN `stressfreiEmailId` INTEGER NULL,
|
|
MODIFY `status` ENUM('DRAFT', 'PENDING', 'ACTIVE', 'CANCELLED', 'EXPIRED', 'DEACTIVATED') NOT NULL DEFAULT 'DRAFT';
|
|
|
|
-- AlterTable
|
|
ALTER TABLE `Customer` ADD COLUMN `portalEmail` VARCHAR(191) NULL,
|
|
ADD COLUMN `portalEnabled` BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN `portalLastLogin` DATETIME(3) NULL,
|
|
ADD COLUMN `portalPasswordEncrypted` VARCHAR(191) NULL,
|
|
ADD COLUMN `portalPasswordHash` VARCHAR(191) NULL;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `AppSetting` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`key` VARCHAR(191) NOT NULL,
|
|
`value` TEXT NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `AppSetting_key_key`(`key`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `CustomerRepresentative` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`customerId` INTEGER NOT NULL,
|
|
`representativeId` INTEGER NOT NULL,
|
|
`notes` VARCHAR(191) NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `CustomerRepresentative_customerId_representativeId_key`(`customerId`, `representativeId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `EmailProviderConfig` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`type` ENUM('PLESK', 'CPANEL', 'DIRECTADMIN') NOT NULL,
|
|
`apiUrl` VARCHAR(191) NOT NULL,
|
|
`apiKey` VARCHAR(191) NULL,
|
|
`username` VARCHAR(191) NULL,
|
|
`passwordEncrypted` VARCHAR(191) NULL,
|
|
`domain` VARCHAR(191) NOT NULL,
|
|
`defaultForwardEmail` VARCHAR(191) NULL,
|
|
`imapServer` VARCHAR(191) NULL,
|
|
`imapPort` INTEGER NULL DEFAULT 993,
|
|
`smtpServer` VARCHAR(191) NULL,
|
|
`smtpPort` INTEGER NULL DEFAULT 465,
|
|
`imapEncryption` ENUM('SSL', 'STARTTLS', 'NONE') NOT NULL DEFAULT 'SSL',
|
|
`smtpEncryption` ENUM('SSL', 'STARTTLS', 'NONE') NOT NULL DEFAULT 'SSL',
|
|
`allowSelfSignedCerts` BOOLEAN NOT NULL DEFAULT false,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`isDefault` BOOLEAN NOT NULL DEFAULT false,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `EmailProviderConfig_name_key`(`name`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `StressfreiEmail` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`customerId` INTEGER NOT NULL,
|
|
`email` VARCHAR(191) NOT NULL,
|
|
`platform` VARCHAR(191) NULL,
|
|
`notes` TEXT NULL,
|
|
`isActive` BOOLEAN NOT NULL DEFAULT true,
|
|
`isProvisioned` BOOLEAN NOT NULL DEFAULT false,
|
|
`provisionedAt` DATETIME(3) NULL,
|
|
`provisionError` TEXT NULL,
|
|
`hasMailbox` BOOLEAN NOT NULL DEFAULT false,
|
|
`emailPasswordEncrypted` 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 `CachedEmail` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`stressfreiEmailId` INTEGER NOT NULL,
|
|
`folder` ENUM('INBOX', 'SENT') NOT NULL DEFAULT 'INBOX',
|
|
`messageId` VARCHAR(191) NOT NULL,
|
|
`uid` INTEGER NOT NULL,
|
|
`subject` VARCHAR(191) NULL,
|
|
`fromAddress` VARCHAR(191) NOT NULL,
|
|
`fromName` VARCHAR(191) NULL,
|
|
`toAddresses` TEXT NOT NULL,
|
|
`ccAddresses` TEXT NULL,
|
|
`receivedAt` DATETIME(3) NOT NULL,
|
|
`textBody` LONGTEXT NULL,
|
|
`htmlBody` LONGTEXT NULL,
|
|
`hasAttachments` BOOLEAN NOT NULL DEFAULT false,
|
|
`attachmentNames` TEXT NULL,
|
|
`contractId` INTEGER NULL,
|
|
`assignedAt` DATETIME(3) NULL,
|
|
`assignedBy` INTEGER NULL,
|
|
`isAutoAssigned` BOOLEAN NOT NULL DEFAULT false,
|
|
`isRead` BOOLEAN NOT NULL DEFAULT false,
|
|
`isStarred` BOOLEAN NOT NULL DEFAULT false,
|
|
`isDeleted` BOOLEAN NOT NULL DEFAULT false,
|
|
`deletedAt` DATETIME(3) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `CachedEmail_contractId_idx`(`contractId`),
|
|
INDEX `CachedEmail_stressfreiEmailId_folder_receivedAt_idx`(`stressfreiEmailId`, `folder`, `receivedAt`),
|
|
INDEX `CachedEmail_stressfreiEmailId_isDeleted_idx`(`stressfreiEmailId`, `isDeleted`),
|
|
UNIQUE INDEX `CachedEmail_stressfreiEmailId_messageId_folder_key`(`stressfreiEmailId`, `messageId`, `folder`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `ContractTask` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`contractId` INTEGER NOT NULL,
|
|
`title` VARCHAR(191) NOT NULL,
|
|
`description` TEXT NULL,
|
|
`status` ENUM('OPEN', 'COMPLETED') NOT NULL DEFAULT 'OPEN',
|
|
`visibleInPortal` BOOLEAN NOT NULL DEFAULT false,
|
|
`createdBy` VARCHAR(191) NULL,
|
|
`completedAt` DATETIME(3) 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 `ContractTaskSubtask` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`taskId` INTEGER NOT NULL,
|
|
`title` VARCHAR(191) NOT NULL,
|
|
`status` ENUM('OPEN', 'COMPLETED') NOT NULL DEFAULT 'OPEN',
|
|
`createdBy` VARCHAR(191) NULL,
|
|
`completedAt` DATETIME(3) 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;
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX `Customer_portalEmail_key` ON `Customer`(`portalEmail`);
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CustomerRepresentative` ADD CONSTRAINT `CustomerRepresentative_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `Customer`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CustomerRepresentative` ADD CONSTRAINT `CustomerRepresentative_representativeId_fkey` FOREIGN KEY (`representativeId`) REFERENCES `Customer`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `StressfreiEmail` ADD CONSTRAINT `StressfreiEmail_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `Customer`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CachedEmail` ADD CONSTRAINT `CachedEmail_stressfreiEmailId_fkey` FOREIGN KEY (`stressfreiEmailId`) REFERENCES `StressfreiEmail`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CachedEmail` ADD CONSTRAINT `CachedEmail_contractId_fkey` FOREIGN KEY (`contractId`) REFERENCES `Contract`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `Contract` ADD CONSTRAINT `Contract_stressfreiEmailId_fkey` FOREIGN KEY (`stressfreiEmailId`) REFERENCES `StressfreiEmail`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ContractTask` ADD CONSTRAINT `ContractTask_contractId_fkey` FOREIGN KEY (`contractId`) REFERENCES `Contract`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `ContractTaskSubtask` ADD CONSTRAINT `ContractTaskSubtask_taskId_fkey` FOREIGN KEY (`taskId`) REFERENCES `ContractTask`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|