104 lines
4.4 KiB
SQL
104 lines
4.4 KiB
SQL
-- CreateTable
|
|
CREATE TABLE `AuditLog` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`userId` INTEGER NULL,
|
|
`userEmail` VARCHAR(191) NOT NULL,
|
|
`userRole` VARCHAR(191) NULL,
|
|
`customerId` INTEGER NULL,
|
|
`isCustomerPortal` BOOLEAN NOT NULL DEFAULT false,
|
|
`action` ENUM('CREATE', 'READ', 'UPDATE', 'DELETE', 'EXPORT', 'ANONYMIZE', 'LOGIN', 'LOGOUT', 'LOGIN_FAILED') NOT NULL,
|
|
`sensitivity` ENUM('LOW', 'MEDIUM', 'HIGH', 'CRITICAL') NOT NULL DEFAULT 'MEDIUM',
|
|
`resourceType` VARCHAR(191) NOT NULL,
|
|
`resourceId` VARCHAR(191) NULL,
|
|
`resourceLabel` VARCHAR(191) NULL,
|
|
`endpoint` VARCHAR(191) NOT NULL,
|
|
`httpMethod` VARCHAR(191) NOT NULL,
|
|
`ipAddress` VARCHAR(191) NOT NULL,
|
|
`userAgent` TEXT NULL,
|
|
`changesBefore` LONGTEXT NULL,
|
|
`changesAfter` LONGTEXT NULL,
|
|
`changesEncrypted` BOOLEAN NOT NULL DEFAULT false,
|
|
`dataSubjectId` INTEGER NULL,
|
|
`legalBasis` VARCHAR(191) NULL,
|
|
`success` BOOLEAN NOT NULL DEFAULT true,
|
|
`errorMessage` TEXT NULL,
|
|
`durationMs` INTEGER NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`hash` VARCHAR(191) NULL,
|
|
`previousHash` VARCHAR(191) NULL,
|
|
|
|
INDEX `AuditLog_userId_idx`(`userId`),
|
|
INDEX `AuditLog_customerId_idx`(`customerId`),
|
|
INDEX `AuditLog_resourceType_resourceId_idx`(`resourceType`, `resourceId`),
|
|
INDEX `AuditLog_dataSubjectId_idx`(`dataSubjectId`),
|
|
INDEX `AuditLog_action_idx`(`action`),
|
|
INDEX `AuditLog_createdAt_idx`(`createdAt`),
|
|
INDEX `AuditLog_sensitivity_idx`(`sensitivity`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `CustomerConsent` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`customerId` INTEGER NOT NULL,
|
|
`consentType` ENUM('DATA_PROCESSING', 'MARKETING_EMAIL', 'MARKETING_PHONE', 'DATA_SHARING_PARTNER') NOT NULL,
|
|
`status` ENUM('GRANTED', 'WITHDRAWN', 'PENDING') NOT NULL DEFAULT 'PENDING',
|
|
`grantedAt` DATETIME(3) NULL,
|
|
`withdrawnAt` DATETIME(3) NULL,
|
|
`source` VARCHAR(191) NULL,
|
|
`documentPath` VARCHAR(191) NULL,
|
|
`version` VARCHAR(191) NULL,
|
|
`ipAddress` VARCHAR(191) NULL,
|
|
`createdBy` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `CustomerConsent_customerId_idx`(`customerId`),
|
|
INDEX `CustomerConsent_consentType_idx`(`consentType`),
|
|
INDEX `CustomerConsent_status_idx`(`status`),
|
|
UNIQUE INDEX `CustomerConsent_customerId_consentType_key`(`customerId`, `consentType`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `DataDeletionRequest` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`customerId` INTEGER NOT NULL,
|
|
`status` ENUM('PENDING', 'IN_PROGRESS', 'COMPLETED', 'PARTIALLY_COMPLETED', 'REJECTED') NOT NULL DEFAULT 'PENDING',
|
|
`requestedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`requestSource` VARCHAR(191) NOT NULL,
|
|
`requestedBy` VARCHAR(191) NOT NULL,
|
|
`processedAt` DATETIME(3) NULL,
|
|
`processedBy` VARCHAR(191) NULL,
|
|
`deletedData` LONGTEXT NULL,
|
|
`retainedData` LONGTEXT NULL,
|
|
`retentionReason` TEXT NULL,
|
|
`proofDocument` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `DataDeletionRequest_customerId_idx`(`customerId`),
|
|
INDEX `DataDeletionRequest_status_idx`(`status`),
|
|
INDEX `DataDeletionRequest_requestedAt_idx`(`requestedAt`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `AuditRetentionPolicy` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`resourceType` VARCHAR(191) NOT NULL,
|
|
`sensitivity` ENUM('LOW', 'MEDIUM', 'HIGH', 'CRITICAL') NULL,
|
|
`retentionDays` INTEGER NOT NULL,
|
|
`description` VARCHAR(191) NULL,
|
|
`legalBasis` 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 `AuditRetentionPolicy_resourceType_sensitivity_key`(`resourceType`, `sensitivity`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `CustomerConsent` ADD CONSTRAINT `CustomerConsent_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `Customer`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|