OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

245_teamboard.sql

2 KB
-- Migration 245: Notizbrett (Teamboard)
--
-- Kurze Zurufe im Team - "ich habe gestern X umgestellt, falls Y auffaellt".
-- Neueste Eintraege stehen oben; die Farbe je Person leitet die Oberflaeche
-- aus der Benutzerkennung ab und wird deshalb nicht gespeichert.

CREATE TABLE IF NOT EXISTS `teamboard_notes` (
    `id`         BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    `body`       TEXT            NOT NULL COMMENT 'Klartext der Notiz',
    -- Passt zu `users`.`id`; ein abweichender Typ laesst den Fremdschluessel scheitern.
    `created_by` BIGINT UNSIGNED NULL COMMENT 'Verfasser; NULL nach Loeschen des Kontos',
    `created_at` TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `edited_at`  TIMESTAMP       NULL DEFAULT NULL COMMENT 'Gesetzt, sobald der Text geaendert wurde',
    PRIMARY KEY (`id`),
    KEY `idx_teamboard_neu` (`created_at`, `id`),
    KEY `idx_teamboard_autor` (`created_by`),
    CONSTRAINT `fk_teamboard_notes_user`
        FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Rechte: Lesen und eigene Eintraege schreiben trennt sich vom Eingriff in
-- fremde Eintraege.
INSERT IGNORE INTO `capabilities` (`name`, `description`, `category`, `risk_level`) VALUES
    ('view_teamboard',   'Notizbrett lesen und eigene Einträge schreiben', 'teamboard', 'low'),
    ('manage_teamboard', 'Fremde Einträge im Notizbrett bearbeiten und löschen', 'teamboard', 'medium');

-- Mitlesen und Mitschreiben darf jede Rolle; das Brett lebt davon.
INSERT IGNORE INTO `role_capabilities` (`role_id`, `capability_id`)
SELECT r.id, c.id FROM `roles` r, `capabilities` c
WHERE c.name = 'view_teamboard';

-- In fremde Einträge greift nur ein, wer ohnehin administriert.
INSERT IGNORE INTO `role_capabilities` (`role_id`, `capability_id`)
SELECT r.id, c.id FROM `roles` r, `capabilities` c
WHERE r.is_admin = 1 AND c.name = 'manage_teamboard';