64 lines
1.9 KiB
SQL
64 lines
1.9 KiB
SQL
CREATE INDEX IF NOT EXISTS idx_mail_accounts_user_created
|
|
ON mail_accounts(user_id, created_at DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_messages_account_date
|
|
ON messages(account_id, date DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_messages_folder_date
|
|
ON messages(folder_id, date DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_mail_rules_user_active_priority
|
|
ON mail_rules(user_id, is_active, priority);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_webhook_templates_user_active
|
|
ON webhook_templates(user_id, is_active);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_outbox_status_created
|
|
ON outbox(status, created_at DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_outbox_account_status
|
|
ON outbox(account_id, status);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_mail_accounts_id_user
|
|
ON mail_accounts(id, user_id);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_mail_folders_id_account
|
|
ON mail_folders(id, account_id);
|
|
|
|
ALTER TABLE messages
|
|
ADD CONSTRAINT messages_folder_account_fk
|
|
FOREIGN KEY (folder_id, account_id)
|
|
REFERENCES mail_folders(id, account_id)
|
|
ON DELETE CASCADE
|
|
NOT VALID;
|
|
|
|
ALTER TABLE outbox
|
|
ADD CONSTRAINT outbox_account_user_fk
|
|
FOREIGN KEY (account_id, user_id)
|
|
REFERENCES mail_accounts(id, user_id)
|
|
ON DELETE CASCADE
|
|
NOT VALID;
|
|
|
|
ALTER TABLE mail_rules
|
|
ADD CONSTRAINT mail_rules_account_user_fk
|
|
FOREIGN KEY (account_id, user_id)
|
|
REFERENCES mail_accounts(id, user_id)
|
|
ON DELETE CASCADE
|
|
NOT VALID;
|
|
|
|
ALTER TABLE attachments
|
|
ADD CONSTRAINT attachments_size_nonnegative_chk
|
|
CHECK (size >= 0) NOT VALID;
|
|
|
|
ALTER TABLE messages
|
|
ADD CONSTRAINT messages_raw_size_nonnegative_chk
|
|
CHECK (raw_size >= 0) NOT VALID;
|
|
|
|
ALTER TABLE webhook_logs
|
|
ADD CONSTRAINT webhook_logs_duration_nonnegative_chk
|
|
CHECK (duration_ms >= 0) NOT VALID;
|
|
|
|
ALTER TABLE outbox
|
|
ADD CONSTRAINT outbox_retry_count_nonnegative_chk
|
|
CHECK (retry_count >= 0) NOT VALID;
|