-- ─────────────────────────────────────────────────────────────────────────────
--  pc-live  |  Private, geteilte und oeffentliche Kalender
--
--  Bisher gehoerte jeder Termin genau einer Person. Kalender sollen aber auch
--  gemeinsam gefuehrt werden – Dienstplaene, Gerichtstermine, Veranstaltungen.
--
--  Geteilt wird ueber dasselbe Mittel wie Postfaecher und Ordner: die Adresse.
--  Wer das Postfach bedienen darf, fuehrt auch dessen Kalender.
--
--    visibility  address    sieht                     bearbeitet
--    ──────────  ─────────  ────────────────────────  ───────────────────────
--    private     NULL       nur die Person            nur die Person
--    shared      Postfach   wer das Postfach hat      wer das Postfach hat
--    public      Postfach   jeder auf dem Server      wer das Postfach hat
--
--  Ein oeffentlicher Termin haengt bewusst auch an einem Postfach: sonst gaebe
--  es niemanden, der ihn spaeter noch aendern oder absagen koennte.
--
--  Wiederholbar ausfuehrbar.
-- ─────────────────────────────────────────────────────────────────────────────

ALTER TABLE `pc_live_calendar`
    ADD COLUMN IF NOT EXISTS `address` VARCHAR(200) NULL DEFAULT NULL
        COMMENT 'Postfach, dessen Kalender das ist. NULL = privat';

ALTER TABLE `pc_live_calendar`
    ADD COLUMN IF NOT EXISTS `visibility` ENUM('private','shared','public')
        NOT NULL DEFAULT 'private';

ALTER TABLE `pc_live_calendar`
    ADD INDEX IF NOT EXISTS `idx_address` (`address`);

ALTER TABLE `pc_live_calendar`
    ADD INDEX IF NOT EXISTS `idx_visibility` (`visibility`);
