Quelltext des aktuellen Standes
-- 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';