-- Tasks plugin initial migration: creates tasks table CREATE TABLE IF NOT EXISTS tasks ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), tenant_id UUID NOT NULL, title VARCHAR(255) NOT NULL, description TEXT, status VARCHAR(20) NOT NULL DEFAULT 'open', priority VARCHAR(10) NOT NULL DEFAULT 'medium', due_date TIMESTAMPTZ, assigned_to UUID REFERENCES users(id) ON DELETE SET NULL, contact_id UUID REFERENCES contacts(id) ON DELETE SET NULL, created_by UUID REFERENCES users(id) ON DELETE SET NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), deleted_at TIMESTAMPTZ ); CREATE INDEX IF NOT EXISTS ix_tasks_tenant_deleted ON tasks(tenant_id, deleted_at); CREATE INDEX IF NOT EXISTS ix_tasks_tenant_status ON tasks(tenant_id, status); CREATE INDEX IF NOT EXISTS ix_tasks_tenant_assigned ON tasks(tenant_id, assigned_to); CREATE INDEX IF NOT EXISTS ix_tasks_tenant_due ON tasks(tenant_id, due_date); CREATE INDEX IF NOT EXISTS ix_tasks_contact ON tasks(contact_id);