59 lines
2.1 KiB
MySQL
59 lines
2.1 KiB
MySQL
|
|
-- Zoom Phone and Meetings Integration Tables
|
||
|
|
-- Supports cross-referencing with Autotask contacts/companies
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS zoom_users (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
zoom_id VARCHAR(255) UNIQUE NOT NULL,
|
||
|
|
email VARCHAR(255) UNIQUE,
|
||
|
|
display_name VARCHAR(255),
|
||
|
|
is_active BOOLEAN DEFAULT true,
|
||
|
|
synced_at TIMESTAMPTZ DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS zoom_calls (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
zoom_call_id VARCHAR(255) UNIQUE NOT NULL,
|
||
|
|
resource_email VARCHAR(255),
|
||
|
|
direction VARCHAR(20),
|
||
|
|
call_status VARCHAR(20),
|
||
|
|
other_party_number VARCHAR(50),
|
||
|
|
other_party_name VARCHAR(255),
|
||
|
|
start_time TIMESTAMPTZ,
|
||
|
|
duration_seconds INTEGER,
|
||
|
|
matched_contact_id BIGINT REFERENCES contacts(id),
|
||
|
|
matched_company_id BIGINT REFERENCES companies(id),
|
||
|
|
synced_at TIMESTAMPTZ DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS zoom_meetings (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
zoom_meeting_id VARCHAR(255) UNIQUE NOT NULL,
|
||
|
|
zoom_meeting_uuid VARCHAR(500),
|
||
|
|
host_email VARCHAR(255),
|
||
|
|
topic VARCHAR(500),
|
||
|
|
start_time TIMESTAMPTZ,
|
||
|
|
end_time TIMESTAMPTZ,
|
||
|
|
duration_minutes INTEGER,
|
||
|
|
participant_count INTEGER DEFAULT 0,
|
||
|
|
client_participant_count INTEGER DEFAULT 0,
|
||
|
|
has_client_attendees BOOLEAN DEFAULT false,
|
||
|
|
synced_at TIMESTAMPTZ DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS zoom_meeting_participants (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
meeting_id INTEGER NOT NULL REFERENCES zoom_meetings(id) ON DELETE CASCADE,
|
||
|
|
participant_email VARCHAR(255),
|
||
|
|
participant_name VARCHAR(255),
|
||
|
|
duration_seconds INTEGER,
|
||
|
|
matched_contact_id BIGINT REFERENCES contacts(id),
|
||
|
|
matched_company_id BIGINT REFERENCES companies(id),
|
||
|
|
is_internal BOOLEAN DEFAULT false,
|
||
|
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_zoom_calls_resource_email_time ON zoom_calls(resource_email, start_time);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_zoom_calls_matched_company ON zoom_calls(matched_company_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_zoom_meetings_host_email_time ON zoom_meetings(host_email, start_time);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_zoom_meeting_participants_email ON zoom_meeting_participants(participant_email);
|