CREATE TABLE `persons` (`id` integer PRIMARY KEY AUTOINCREMENT,`email` text NOT NULL,`name` text NOT NULL,`created_at` datetime); CREATE UNIQUE INDEX `idx_persons_email` ON `persons`(`email`); CREATE TABLE `meetings` (`id` integer PRIMARY KEY AUTOINCREMENT,`sqid` text NOT NULL,`title_sealed` blob,`starts_at` datetime,`created_by` text NOT NULL,`created_at` datetime,`ended_at` datetime,`ended_by` text); CREATE UNIQUE INDEX `idx_meetings_sqid` ON `meetings`(`sqid`); CREATE TABLE `meeting_links` (`id` integer PRIMARY KEY AUTOINCREMENT,`meeting_id` integer NOT NULL,`token_hash` text NOT NULL,`created_by` text NOT NULL,`created_at` datetime,`revoked_at` datetime); CREATE UNIQUE INDEX `idx_meeting_links_token_hash` ON `meeting_links`(`token_hash`); CREATE INDEX `idx_meeting_links_meeting_id` ON `meeting_links`(`meeting_id`); CREATE TABLE `guest_grants` (`id` integer PRIMARY KEY AUTOINCREMENT,`meeting_id` integer NOT NULL,`person_id` integer NOT NULL,`granted_at` datetime,`expires_at` datetime,`admitted_at` datetime,`admitted_by` text); CREATE INDEX `idx_guest_grants_expires_at` ON `guest_grants`(`expires_at`); CREATE UNIQUE INDEX `idx_grant_meeting_person` ON `guest_grants`(`meeting_id`,`person_id`); CREATE TABLE `pending_joins` (`id` integer PRIMARY KEY AUTOINCREMENT,`meeting_id` integer NOT NULL,`link_id` integer NOT NULL,`address_fingerprint` text NOT NULL,`created_at` datetime,`expires_at` datetime); CREATE INDEX `idx_pending_joins_address_fingerprint` ON `pending_joins`(`address_fingerprint`);