Files
warmbly/internal/infrastructure/db/migrations/000008_task_scheduling.up.sql
T
2026-02-10 19:30:47 +01:00

33 lines
1.2 KiB
SQL

-- Add scheduling columns to tasks table
ALTER TABLE tasks ADD COLUMN scheduled_at TIMESTAMPTZ;
ALTER TABLE tasks ADD COLUMN completed_at TIMESTAMPTZ;
ALTER TABLE tasks ADD COLUMN cloud_task_name TEXT;
-- Add indexes for scheduling queries (critical for performance)
CREATE INDEX idx_tasks_account_scheduled
ON tasks(email_account_id, scheduled_at)
WHERE status = 'pending';
CREATE INDEX idx_tasks_account_completed
ON tasks(email_account_id, completed_at)
WHERE status = 'completed';
CREATE INDEX idx_tasks_scheduled_date
ON tasks(scheduled_at)
WHERE status = 'pending';
-- Add encryption flag to email_tasks
ALTER TABLE email_tasks ADD COLUMN encrypted BOOLEAN NOT NULL DEFAULT TRUE;
-- Add foreign key for worker_id on email_accounts (workers table created in 000005)
ALTER TABLE email_accounts ADD CONSTRAINT fk_email_accounts_worker
FOREIGN KEY (worker_id) REFERENCES workers(id) ON DELETE SET NULL;
-- Add index for worker lookups
CREATE INDEX idx_email_accounts_worker ON email_accounts(worker_id) WHERE worker_id IS NOT NULL;
-- Index for counting campaign-only emails (excluding warmup)
CREATE INDEX idx_tasks_campaign_completed_today
ON tasks(email_account_id, completed_at)
WHERE status = 'completed' AND task_type = 'campaign';