Files
RustBox/migrations/mysql/schema.sql
T
Mateusz Gruszczyński dacdf9c27d
RustBox CI / rustbox (push) Canceled after 0s
v0.2.8
2026-11-01 20:40:40 +01:00

444 lines
20 KiB
SQL

-- RustBox 0.2.0 MySQL schema.
-- One physical database contains global sessions plus isolated per-account tables.
-- Application tables are materialized by replacing {{p}} with a collision-checked prefix.
-- Squashed compatibility baseline: V046. Current runtime schema: V048.
-- RUSTBOX:GLOBAL-BEGIN
CREATE TABLE IF NOT EXISTS rustbox_accounts (
user_hash VARCHAR(128) PRIMARY KEY,
table_prefix VARCHAR(64) NOT NULL UNIQUE,
schema_version BIGINT NOT NULL DEFAULT 46,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS sessions (
token VARCHAR(64) PRIMARY KEY,
account_id VARCHAR(64) NOT NULL UNIQUE,
browser_id VARCHAR(64) NOT NULL,
email VARCHAR(320) NOT NULL,
password_ciphertext TEXT NOT NULL,
user_hash VARCHAR(128) NOT NULL,
imap_host VARCHAR(255) NOT NULL,
imap_port BIGINT NOT NULL,
imap_tls BIGINT NOT NULL,
imap_tls_verify BIGINT NOT NULL,
smtp_host VARCHAR(255) NOT NULL,
smtp_port BIGINT NOT NULL,
smtp_tls BIGINT NOT NULL,
smtp_tls_verify BIGINT NOT NULL,
timeout_secs BIGINT NOT NULL,
created_at_unix BIGINT NOT NULL,
last_accessed_unix BIGINT NOT NULL,
user_agent VARCHAR(512) NOT NULL DEFAULT '',
INDEX idx_sessions_browser (browser_id),
INDEX idx_sessions_user (user_hash),
INDEX idx_sessions_expiry (last_accessed_unix, timeout_secs)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- RUSTBOX:GLOBAL-END
-- RUSTBOX:TENANT-BEGIN
-- {{p}} is replaced at runtime with the account table prefix.
CREATE TABLE {{p}}calendar_events (
id VARCHAR(255) PRIMARY KEY,
title TEXT NOT NULL,
description LONGTEXT NOT NULL DEFAULT (''),
location TEXT NOT NULL DEFAULT (''),
start_time VARCHAR(255) NOT NULL,
end_time VARCHAR(255) NOT NULL,
all_day BIGINT NOT NULL DEFAULT 0,
recurrence_rule TEXT,
attendees LONGTEXT NOT NULL DEFAULT ('[]'),
organizer TEXT NOT NULL DEFAULT (''),
status TEXT NOT NULL DEFAULT ('confirmed'),
source TEXT NOT NULL DEFAULT ('manual'),
source_uid VARCHAR(255),
source_message_uid BIGINT,
source_message_folder TEXT,
meeting_url TEXT,
color TEXT,
reminder_minutes BIGINT,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}calendar_settings (
id BIGINT DEFAULT 1 PRIMARY KEY,
default_view TEXT NOT NULL DEFAULT ('month'),
week_starts_on BIGINT NOT NULL DEFAULT 0,
working_hours_start TEXT NOT NULL DEFAULT ('09:00'),
working_hours_end TEXT NOT NULL DEFAULT ('17:00'),
time_format TEXT NOT NULL DEFAULT ('12h'),
zoom_link TEXT NOT NULL DEFAULT (''),
teams_link TEXT NOT NULL DEFAULT (''),
meet_link TEXT NOT NULL DEFAULT (''),
caldav_url TEXT NOT NULL DEFAULT (''),
caldav_username TEXT NOT NULL DEFAULT (''),
caldav_password TEXT NOT NULL DEFAULT (''),
caldav_enabled BIGINT NOT NULL DEFAULT 0,
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}contact_group_members (
group_id VARCHAR(255) NOT NULL,
contact_id VARCHAR(255) NOT NULL,
PRIMARY KEY (group_id, contact_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}contact_groups (
id VARCHAR(255) PRIMARY KEY,
name VARCHAR(512) NOT NULL,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
UNIQUE (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}contact_photos (
contact_id VARCHAR(255) PRIMARY KEY,
content_type TEXT NOT NULL,
data LONGBLOB NOT NULL,
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}contacts (
id VARCHAR(255) PRIMARY KEY,
email VARCHAR(320) NOT NULL,
name VARCHAR(512) NOT NULL DEFAULT '',
company TEXT NOT NULL DEFAULT (''),
notes LONGTEXT NOT NULL DEFAULT (''),
is_favorite BIGINT NOT NULL DEFAULT 0,
last_contacted VARCHAR(64),
contact_count BIGINT NOT NULL DEFAULT 0,
source TEXT NOT NULL DEFAULT ('manual'),
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
phone TEXT NOT NULL DEFAULT (''),
job_title TEXT NOT NULL DEFAULT (''),
address TEXT NOT NULL DEFAULT (''),
website TEXT NOT NULL DEFAULT (''),
birthday TEXT NOT NULL DEFAULT (''),
emails_json LONGTEXT NOT NULL DEFAULT ('[]'),
phones_json LONGTEXT NOT NULL DEFAULT ('[]'),
addresses_json LONGTEXT NOT NULL DEFAULT ('[]')
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}display_preferences (
id BIGINT DEFAULT 1 PRIMARY KEY,
density TEXT NOT NULL DEFAULT ('comfortable'),
theme TEXT NOT NULL DEFAULT ('system'),
language TEXT NOT NULL DEFAULT ('en'),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
compose_format TEXT NOT NULL DEFAULT ('html'),
deep_index BIGINT NOT NULL DEFAULT 0,
animation_mode TEXT,
preview_pane TEXT NOT NULL DEFAULT ('right'),
ui_scale TEXT NOT NULL DEFAULT ('normal'),
color_preset TEXT NOT NULL DEFAULT ('sage'),
accent_color TEXT NOT NULL DEFAULT ('#6f9c86'),
font_family TEXT NOT NULL DEFAULT ('system'),
font_size BIGINT NOT NULL DEFAULT 13,
row_height BIGINT NOT NULL DEFAULT 58,
folder_pane_width BIGINT NOT NULL DEFAULT 228,
message_pane_width BIGINT NOT NULL DEFAULT 420,
border_radius BIGINT NOT NULL DEFAULT 4,
contrast TEXT NOT NULL DEFAULT ('normal'),
show_avatars BIGINT NOT NULL DEFAULT 1,
show_attachment_icons BIGINT NOT NULL DEFAULT 1,
show_flags BIGINT NOT NULL DEFAULT 1,
reduce_motion BIGINT NOT NULL DEFAULT 0,
date_format TEXT NOT NULL DEFAULT ('locale'),
time_format TEXT NOT NULL DEFAULT ('locale'),
background_color TEXT NOT NULL DEFAULT ('#121513'),
panel_color TEXT NOT NULL DEFAULT ('#181c19'),
text_color TEXT NOT NULL DEFAULT ('#edf0ec'),
compose_autosave_ms BIGINT NOT NULL DEFAULT 3000,
default_priority TEXT NOT NULL DEFAULT ('normal'),
request_mdn_default BIGINT NOT NULL DEFAULT 0,
attachment_reminder BIGINT NOT NULL DEFAULT 1,
icon_size BIGINT NOT NULL DEFAULT 18,
toolbar_density TEXT NOT NULL DEFAULT ('normal'),
sidebar_item_height BIGINT NOT NULL DEFAULT 29,
reader_max_width BIGINT NOT NULL DEFAULT 0,
composer_width BIGINT NOT NULL DEFAULT 900,
selection_color TEXT NOT NULL DEFAULT ('#28352e'),
unread_font_weight BIGINT NOT NULL DEFAULT 730,
unread_badge_style TEXT NOT NULL DEFAULT ('dot'),
compact_headers BIGINT NOT NULL DEFAULT 0,
show_borders BIGINT NOT NULL DEFAULT 1,
scrollbar_density TEXT NOT NULL DEFAULT ('thin'),
monochrome BIGINT NOT NULL DEFAULT 0,
folder_background TEXT NOT NULL DEFAULT (''),
message_background TEXT NOT NULL DEFAULT (''),
reader_background TEXT NOT NULL DEFAULT (''),
compose_font_family TEXT NOT NULL DEFAULT ('system'),
reply_position TEXT NOT NULL DEFAULT ('above'),
quote_style TEXT NOT NULL DEFAULT ('standard'),
forward_mode TEXT NOT NULL DEFAULT ('inline'),
spellcheck_enabled BIGINT NOT NULL DEFAULT 1,
interface_skin TEXT NOT NULL DEFAULT ('rustbox'),
preset_scale_unlocked BIGINT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}draft_attachments (
id VARCHAR(255) PRIMARY KEY,
draft_id VARCHAR(255) NOT NULL,
filename TEXT NOT NULL,
content_type TEXT NOT NULL,
size BIGINT NOT NULL,
file_path TEXT NOT NULL,
checksum_sha256 VARCHAR(64) NULL,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}search_outbox (
id VARCHAR(64) PRIMARY KEY,
generation VARCHAR(64) NOT NULL,
event_type VARCHAR(16) NOT NULL,
message_uid BIGINT NOT NULL,
folder TEXT NOT NULL,
payload LONGTEXT NULL,
attempts BIGINT NOT NULL DEFAULT 0,
available_at BIGINT NOT NULL DEFAULT 0,
claimed_until BIGINT NOT NULL DEFAULT 0,
dead_letter BIGINT NOT NULL DEFAULT 0,
last_error TEXT NULL,
created_at BIGINT NOT NULL,
updated_at BIGINT NOT NULL,
INDEX idx_search_outbox_ready (dead_letter, available_at, claimed_until, updated_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}drafts (
id VARCHAR(255) PRIMARY KEY,
to_addresses LONGTEXT NOT NULL DEFAULT (''),
cc_addresses LONGTEXT NOT NULL DEFAULT (''),
bcc_addresses LONGTEXT NOT NULL DEFAULT (''),
subject TEXT NOT NULL DEFAULT (''),
text_body LONGTEXT NOT NULL DEFAULT (''),
html_body LONGTEXT,
in_reply_to TEXT,
references_header LONGTEXT,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
request_mdn BIGINT NOT NULL DEFAULT 0,
priority TEXT NOT NULL DEFAULT ('normal'),
compose_format TEXT NOT NULL DEFAULT ('html'),
remote_folder TEXT,
remote_uid BIGINT,
remote_uid_validity BIGINT,
pgp_mode TEXT NOT NULL DEFAULT ('none'),
pgp_inline BIGINT NOT NULL DEFAULT 0,
pgp_attach_public_key BIGINT NOT NULL DEFAULT 0,
pgp_attach_recipient_keys BIGINT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}folder_preferences (
folder_name VARCHAR(512) PRIMARY KEY,
flagged_on_top BIGINT,
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}folders (
name VARCHAR(512) PRIMARY KEY,
delimiter TEXT,
parent TEXT,
flags TEXT NOT NULL DEFAULT (''),
is_subscribed BIGINT NOT NULL DEFAULT 1,
total_count BIGINT NOT NULL DEFAULT 0,
unread_count BIGINT NOT NULL DEFAULT 0,
uid_validity BIGINT NOT NULL DEFAULT 0,
highest_modseq BIGINT NOT NULL DEFAULT 0,
counter_generation BIGINT NOT NULL DEFAULT 0,
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
messages_updated_at VARCHAR(64)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}identities (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
display_name TEXT NOT NULL DEFAULT (''),
email TEXT NOT NULL,
signature_html LONGTEXT NOT NULL DEFAULT (''),
is_default BIGINT NOT NULL DEFAULT 0,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
reply_to TEXT NOT NULL DEFAULT (''),
bcc TEXT NOT NULL DEFAULT (''),
organization TEXT NOT NULL DEFAULT (''),
signature_text LONGTEXT NOT NULL DEFAULT (''),
signature_new BIGINT NOT NULL DEFAULT 1,
signature_reply BIGINT NOT NULL DEFAULT 1,
signature_forward BIGINT NOT NULL DEFAULT 1,
signature_position TEXT NOT NULL DEFAULT ('above'),
pgp_fingerprint TEXT,
pgp_sign_default BIGINT NOT NULL DEFAULT 0,
pgp_encrypt_default BIGINT NOT NULL DEFAULT 0,
pgp_inline_default BIGINT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}known_addresses (
email VARCHAR(320) NOT NULL PRIMARY KEY,
name VARCHAR(512) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}mail_preferences (
id BIGINT PRIMARY KEY,
messages_per_page BIGINT NOT NULL DEFAULT 50,
mark_read_delay_ms BIGINT NOT NULL DEFAULT 0,
remote_images TEXT NOT NULL DEFAULT ('ask'),
preferred_body TEXT NOT NULL DEFAULT ('auto'),
thread_mode TEXT NOT NULL DEFAULT ('threaded'),
collapse_quotes BIGINT NOT NULL DEFAULT 1,
show_snippets BIGINT NOT NULL DEFAULT 1,
default_sort TEXT NOT NULL DEFAULT ('date_desc'),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
flagged_on_top BIGINT NOT NULL DEFAULT 0,
sync_imap_keywords BIGINT NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}meeting_templates (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name TEXT NOT NULL,
url_template TEXT NOT NULL,
icon TEXT NOT NULL DEFAULT (''),
is_default BIGINT NOT NULL DEFAULT 0,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}message_tags (
tag_id VARCHAR(128) NOT NULL,
message_uid BIGINT NOT NULL,
message_folder VARCHAR(512) NOT NULL,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
PRIMARY KEY (tag_id, message_uid, message_folder)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}messages (
uid BIGINT NOT NULL,
folder VARCHAR(512) NOT NULL,
message_id VARCHAR(255),
in_reply_to VARCHAR(255),
subject TEXT NOT NULL DEFAULT (''),
from_address TEXT NOT NULL DEFAULT (''),
from_name TEXT NOT NULL DEFAULT (''),
to_addresses LONGTEXT NOT NULL DEFAULT (''),
cc_addresses LONGTEXT NOT NULL DEFAULT (''),
date TEXT NOT NULL,
flags TEXT NOT NULL DEFAULT (''),
size BIGINT NOT NULL DEFAULT 0,
has_attachments BIGINT NOT NULL DEFAULT 0,
snippet TEXT NOT NULL DEFAULT (''),
body_cached BIGINT NOT NULL DEFAULT 0,
body_html LONGTEXT,
body_text LONGTEXT,
references_header LONGTEXT,
date_epoch BIGINT NOT NULL DEFAULT 0,
attachments_json LONGTEXT,
raw_headers LONGTEXT,
reaction TEXT,
email_theme BIGINT,
PRIMARY KEY (uid, folder)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}notification_preferences (
id BIGINT DEFAULT 1 PRIMARY KEY,
enabled BIGINT NOT NULL DEFAULT 1,
sound BIGINT NOT NULL DEFAULT 0,
folders TEXT NOT NULL DEFAULT ('["INBOX"]'),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
dnd_enabled BIGINT NOT NULL DEFAULT 0,
dnd_start TEXT NOT NULL DEFAULT ('22:00'),
dnd_end TEXT NOT NULL DEFAULT ('07:00')
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}pgp_keys (
fingerprint VARCHAR(255) PRIMARY KEY,
key_id TEXT NOT NULL,
email VARCHAR(320) NOT NULL DEFAULT '',
user_id TEXT NOT NULL DEFAULT (''),
public_key_armor LONGTEXT NOT NULL,
secret_key_path TEXT,
has_secret BIGINT NOT NULL DEFAULT 0,
trust TEXT NOT NULL DEFAULT ('unknown'),
source TEXT NOT NULL DEFAULT ('import'),
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}pgp_preferences (
id BIGINT PRIMARY KEY,
wkd_enabled BIGINT NOT NULL DEFAULT 1,
hkp_enabled BIGINT NOT NULL DEFAULT 0,
require_trusted_encryption BIGINT NOT NULL DEFAULT 0,
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}response_templates (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(512) NOT NULL,
body TEXT NOT NULL DEFAULT (''),
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
format TEXT NOT NULL DEFAULT ('text'),
UNIQUE (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}saved_searches (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(512) NOT NULL,
query_string LONGTEXT NOT NULL,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}special_folders (
role VARCHAR(255) PRIMARY KEY,
folder_name TEXT NOT NULL,
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}tags (
id VARCHAR(128) PRIMARY KEY,
name VARCHAR(512) NOT NULL,
color TEXT NOT NULL DEFAULT ('#6b7280'),
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
updated_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR)),
imap_keyword VARCHAR(255) NOT NULL DEFAULT '',
UNIQUE (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}trusted_senders (
email VARCHAR(320) PRIMARY KEY,
created_at VARCHAR(64) NOT NULL DEFAULT (CAST(CURRENT_TIMESTAMP AS CHAR))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE {{p}}user_meta (
key VARCHAR(255) PRIMARY KEY,
value TEXT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE {{p}}contact_group_members ADD CONSTRAINT {{p}}fk_contact_group_members_0 FOREIGN KEY (contact_id) REFERENCES {{p}}contacts (id) ON DELETE CASCADE;
ALTER TABLE {{p}}contact_group_members ADD CONSTRAINT {{p}}fk_contact_group_members_1 FOREIGN KEY (group_id) REFERENCES {{p}}contact_groups (id) ON DELETE CASCADE;
ALTER TABLE {{p}}contact_photos ADD CONSTRAINT {{p}}fk_contact_photos_0 FOREIGN KEY (contact_id) REFERENCES {{p}}contacts (id) ON DELETE CASCADE;
ALTER TABLE {{p}}draft_attachments ADD CONSTRAINT {{p}}fk_draft_attachments_0 FOREIGN KEY (draft_id) REFERENCES {{p}}drafts (id) ON DELETE CASCADE;
ALTER TABLE {{p}}folder_preferences ADD CONSTRAINT {{p}}fk_folder_preferences_0 FOREIGN KEY (folder_name) REFERENCES {{p}}folders (name) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE {{p}}message_tags ADD CONSTRAINT {{p}}fk_message_tags_0 FOREIGN KEY (message_uid, message_folder) REFERENCES {{p}}messages (uid, folder) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE {{p}}message_tags ADD CONSTRAINT {{p}}fk_message_tags_1 FOREIGN KEY (tag_id) REFERENCES {{p}}tags (id) ON DELETE CASCADE;
ALTER TABLE {{p}}messages ADD CONSTRAINT {{p}}fk_messages_0 FOREIGN KEY (folder) REFERENCES {{p}}folders (name) ON DELETE CASCADE;
CREATE INDEX {{p}}idx_calendar_events_source_uid ON {{p}}calendar_events (source_uid);
CREATE INDEX {{p}}idx_calendar_events_time ON {{p}}calendar_events (start_time, end_time);
CREATE INDEX {{p}}idx_cgm_contact_id ON {{p}}contact_group_members (contact_id);
CREATE INDEX {{p}}idx_contacts_contact_count ON {{p}}contacts (contact_count DESC);
CREATE UNIQUE INDEX {{p}}idx_contacts_email ON {{p}}contacts (email);
CREATE INDEX {{p}}idx_contacts_last_contacted ON {{p}}contacts (last_contacted DESC);
CREATE INDEX {{p}}idx_contacts_name ON {{p}}contacts (name);
CREATE INDEX {{p}}idx_known_addresses_name ON {{p}}known_addresses (name);
CREATE INDEX {{p}}idx_message_tags_message ON {{p}}message_tags (message_uid, message_folder);
CREATE INDEX {{p}}idx_message_tags_tag ON {{p}}message_tags (tag_id);
CREATE INDEX {{p}}idx_messages_folder_date ON {{p}}messages (folder, date_epoch DESC);
CREATE INDEX {{p}}idx_messages_in_reply_to ON {{p}}messages (in_reply_to);
CREATE INDEX {{p}}idx_messages_message_id ON {{p}}messages (message_id);
CREATE INDEX {{p}}idx_pgp_keys_email ON {{p}}pgp_keys (email);
CREATE UNIQUE INDEX {{p}}idx_saved_searches_name ON {{p}}saved_searches (name);
-- RUSTBOX:TENANT-END