-- Create Calendars Table
CREATE TABLE calendars (
tenant_id UUID,
calendar_id UUID DEFAULT gen_random_uuid(),
user_id UUID,
event_date TIMESTAMP NOT NULL,
event_type VARCHAR(50) NOT NULL, -- e.g., "meeting", "available", "unavailable"
event_details JSONB,
PRIMARY KEY (tenant_id, calendar_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES users.tenant_users(tenant_id, user_id)
);
-- Create Meetings Table
CREATE TABLE meetings (
tenant_id UUID,
meeting_id UUID DEFAULT gen_random_uuid(),
organizer_id UUID,
meeting_time TIMESTAMP NOT NULL,
location VARCHAR(255),
status VARCHAR(50), -- e.g., "scheduled", "completed", "canceled"
details TEXT,
vector_embedding VECTOR(768), -- Adjust the dimensions as needed
PRIMARY KEY (tenant_id, meeting_id),
FOREIGN KEY (tenant_id, organizer_id) REFERENCES users.tenant_users(tenant_id, user_id)
);
-- Create Meeting Participants Table
CREATE TABLE meeting_participants (
tenant_id UUID,
meeting_id UUID,
user_id UUID,
PRIMARY KEY (tenant_id, meeting_id, user_id),
FOREIGN KEY (tenant_id, meeting_id) REFERENCES meetings(tenant_id, meeting_id),
FOREIGN KEY (tenant_id, user_id) REFERENCES users.tenant_users(tenant_id, user_id)
);
-- Create Reminders Table
CREATE TABLE reminders (
tenant_id UUID,
reminder_id UUID DEFAULT gen_random_uuid(),
meeting_id UUID,
reminder_time TIMESTAMP NOT NULL,
message TEXT,
PRIMARY KEY (tenant_id, reminder_id),
FOREIGN KEY (tenant_id, meeting_id) REFERENCES meetings(tenant_id, meeting_id)
);
-- Create Meeting Statistics Table
CREATE TABLE meeting_statistics (
tenant_id UUID,
stat_id UUID DEFAULT gen_random_uuid(),
meeting_id UUID,
duration_minutes INT,
attended BOOLEAN,
PRIMARY KEY (tenant_id, stat_id),
FOREIGN KEY (tenant_id, meeting_id) REFERENCES meetings(tenant_id, meeting_id)
);
-- Create Shared Calendars Table
CREATE TABLE shared_calendars (
tenant_id UUID,
owner_id UUID,
shared_with_id UUID,
PRIMARY KEY (tenant_id, owner_id, shared_with_id),
FOREIGN KEY (tenant_id, owner_id) REFERENCES users.tenant_users(tenant_id, user_id),
FOREIGN KEY (tenant_id, shared_with_id) REFERENCES users.tenant_users(tenant_id, user_id)
);