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);