31 lines
1.2 KiB
SQL
31 lines
1.2 KiB
SQL
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);
|