CREATE EXTENSION IF NOT EXISTS pgcrypto;

CREATE TABLE IF NOT EXISTS user_calendar_events (
    calendar_event_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    tenant_id TEXT NOT NULL,
    owner_user_id TEXT NOT NULL,
    lead_id TEXT,
    source_event_id UUID,
    title TEXT NOT NULL,
    description TEXT,
    start_at TIMESTAMPTZ NOT NULL,
    end_at TIMESTAMPTZ NOT NULL,
    all_day BOOLEAN NOT NULL DEFAULT FALSE,
    status TEXT NOT NULL DEFAULT 'confirmed'
        CHECK (status IN ('tentative', 'confirmed', 'done', 'cancelled')),
    reminder_minutes INTEGER[] NOT NULL DEFAULT '{15}'::INTEGER[],
    created_by TEXT NOT NULL DEFAULT 'user'
        CHECK (created_by IN ('user', 'nemoclaw_suggested', 'operator_import')),
    is_nemoclaw_confirmed BOOLEAN NOT NULL DEFAULT FALSE,
    location TEXT,
    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_calendar_events_owner
    ON user_calendar_events (tenant_id, owner_user_id, start_at);

CREATE INDEX IF NOT EXISTS idx_calendar_events_lead
    ON user_calendar_events (tenant_id, lead_id, start_at);
