ALTER TABLE blog_posts
    ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMPTZ;

DROP INDEX IF EXISTS idx_blog_slug;
ALTER TABLE blog_posts DROP CONSTRAINT IF EXISTS blog_posts_slug_key;

CREATE UNIQUE INDEX IF NOT EXISTS ux_blog_posts_slug_active
    ON blog_posts (slug)
    WHERE deleted_at IS NULL;

CREATE INDEX IF NOT EXISTS idx_blog_slug_active
    ON blog_posts (slug)
    WHERE deleted_at IS NULL;

CREATE INDEX IF NOT EXISTS idx_blog_published_active
    ON blog_posts (is_published, published_at DESC)
    WHERE deleted_at IS NULL;

CREATE INDEX IF NOT EXISTS idx_blog_category_active
    ON blog_posts (category_id)
    WHERE deleted_at IS NULL;
