-- Theme C (P1-4 + P3-11): MaintenanceWindow model

CREATE TABLE `MaintenanceWindow` (
    `id`          INT NOT NULL AUTO_INCREMENT,
    `monitorId`   INT NULL,
    `startsAt`    DATETIME(3) NOT NULL,
    `endsAt`      DATETIME(3) NOT NULL,
    `reason`      VARCHAR(255) NOT NULL,
    `recurrence`  VARCHAR(64) NULL,
    `createdAt`   DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `createdById` INT NOT NULL,
    `deletedAt`   DATETIME(3) NULL,
    `deletedById` INT NULL,
    PRIMARY KEY (`id`),
    INDEX `MaintenanceWindow_monitorId_startsAt_endsAt_idx` (`monitorId`, `startsAt`, `endsAt`),
    INDEX `MaintenanceWindow_deletedAt_idx` (`deletedAt`),
    CONSTRAINT `MaintenanceWindow_monitorId_fkey`
        FOREIGN KEY (`monitorId`) REFERENCES `Monitor` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT `MaintenanceWindow_createdById_fkey`
        FOREIGN KEY (`createdById`) REFERENCES `User` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT `MaintenanceWindow_deletedById_fkey`
        FOREIGN KEY (`deletedById`) REFERENCES `User` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
);
