OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

226_deadline_actions.sql

1 KB
-- Quittierte und verschobene Fristen.
--
-- Fristen entstehen abgeleitet aus anderen Modulen und haben keine eigene
-- Zeile. Eine Entscheidung haengt deshalb am Tripel aus Quelle, Objekt und
-- dem konkreten Faelligkeitsdatum: Verschiebt sich das Datum spaeter, ist es
-- eine neue Frist und braucht eine neue Entscheidung.

CREATE TABLE IF NOT EXISTS `deadline_actions` (
    `id`            INT AUTO_INCREMENT PRIMARY KEY,
    `source`        VARCHAR(40)  NOT NULL,
    `object_id`     INT          NOT NULL,
    `due_date`      DATE         NOT NULL,
    `action`        ENUM('acknowledged','postponed') NOT NULL,
    -- Nur beim Verschieben gesetzt: das neue Datum.
    `postponed_to`  DATE         NULL,
    `note`          VARCHAR(500) NULL,
    -- Passt zu `users`.`id`; ein abweichender Typ laesst den Fremdschluessel scheitern.
    `created_by`    BIGINT UNSIGNED NULL,
    `created_at`    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at`    TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY `uniq_frist` (`source`, `object_id`, `due_date`),
    KEY `idx_quelle` (`source`, `object_id`),
    CONSTRAINT `fk_deadline_actions_user`
        FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;