CREATE TABLE IF NOT EXISTS mailboxes ( id TEXT PRIMARY KEY, email TEXT NOT NULL UNIQUE, prefix TEXT NOT NULL, display_name TEXT, account_id TEXT, status TEXT NOT NULL DEFAULT 'active', openclaw_status TEXT, install_command TEXT, auth_url TEXT, comm_level INTEGER, ext_receive_type INTEGER, ext_send_type INTEGER, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_mailboxes_email ON mailboxes(email); CREATE INDEX IF NOT EXISTS idx_mailboxes_status ON mailboxes(status); CREATE TABLE IF NOT EXISTS mails ( id INTEGER PRIMARY KEY AUTOINCREMENT, provider_mail_id TEXT NOT NULL, mailbox_email TEXT NOT NULL, source TEXT, address TEXT, subject TEXT, text TEXT, html TEXT, raw_json TEXT NOT NULL, header_raw TEXT, has_attachments INTEGER NOT NULL DEFAULT 0, received_at TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE(mailbox_email, provider_mail_id) ); CREATE INDEX IF NOT EXISTS idx_mails_mailbox_email ON mails(mailbox_email); CREATE INDEX IF NOT EXISTS idx_mails_created_at ON mails(created_at); CREATE TABLE IF NOT EXISTS attachments ( id INTEGER PRIMARY KEY AUTOINCREMENT, mail_id INTEGER NOT NULL, provider_part_id TEXT NOT NULL, filename TEXT, content_type TEXT, size INTEGER, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY(mail_id) REFERENCES mails(id) ON DELETE CASCADE ); CREATE INDEX IF NOT EXISTS idx_attachments_mail_id ON attachments(mail_id); CREATE TABLE IF NOT EXISTS app_settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP );