CREATE OR REPLACE TABLE vn.mandateLog (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `originFk` int(11) DEFAULT NULL,
    `userFk` int(10) unsigned DEFAULT NULL,
    `action` set('insert','update','delete','select') NOT NULL,
    `creationDate` timestamp NULL DEFAULT current_timestamp(),
    `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
    `changedModel` enum('client') NOT NULL DEFAULT 'client',
    `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
    `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
    `changedModelId` int(11) NOT NULL,
    `changedModelValue` varchar(45) DEFAULT NULL,
    `summaryId` varchar(30) DEFAULT NULL,
    `reason` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY `logMandate_userFk` (`userFk`),
    KEY `mandateLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
    KEY `mandateLog_originFk` (`originFk`,`creationDate`),
    KEY `mandateLog_creationDate_IDX` (`creationDate` DESC) USING BTREE,
    CONSTRAINT `mandateUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;

ALTER TABLE vn.mandate ADD editorFk INT UNSIGNED DEFAULT NULL NULL;
