br-office-suite/database/migrations/009_calendar_personal_events_and_sync.sql
2026-05-10 10:46:05 +02:00

29 lines
1.2 KiB
SQL

CREATE TABLE IF NOT EXISTS calendar_event (
id BIGSERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
event_kind VARCHAR(30) NOT NULL DEFAULT 'personal',
source_type VARCHAR(30) NOT NULL DEFAULT 'manual',
source_uid VARCHAR(255),
source_name VARCHAR(255),
starts_at TIMESTAMPTZ NOT NULL,
ends_at TIMESTAMPTZ,
all_day BOOLEAN NOT NULL DEFAULT FALSE,
location VARCHAR(255),
status VARCHAR(30) NOT NULL DEFAULT 'geplant',
priority VARCHAR(20) NOT NULL DEFAULT 'mittel',
visibility conf_level NOT NULL DEFAULT 'intern',
owner_user_id BIGINT REFERENCES app_user(id),
committee_id BIGINT REFERENCES committee(id),
created_by BIGINT REFERENCES app_user(id),
updated_by BIGINT REFERENCES app_user(id),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_calendar_event_starts_at ON calendar_event(starts_at);
CREATE INDEX IF NOT EXISTS idx_calendar_event_owner_user_id ON calendar_event(owner_user_id);
CREATE INDEX IF NOT EXISTS idx_calendar_event_committee_id ON calendar_event(committee_id);
CREATE INDEX IF NOT EXISTS idx_calendar_event_source_type_uid ON calendar_event(source_type, source_uid);