initial commit: rocket.new export of broadcastbeat
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
-- ============================================================
|
||||
-- Migration: article_status_scheduling
|
||||
-- Timestamp: 20260321080000
|
||||
-- Adds: pending status support + scheduled_at column to both article tables
|
||||
-- ============================================================
|
||||
|
||||
-- 1. Add scheduled_at to wp_imported_posts
|
||||
ALTER TABLE public.wp_imported_posts
|
||||
ADD COLUMN IF NOT EXISTS scheduled_at TIMESTAMPTZ,
|
||||
ADD COLUMN IF NOT EXISTS submitted_for_review_at TIMESTAMPTZ;
|
||||
|
||||
-- 2. Add scheduled_at to native_articles
|
||||
ALTER TABLE public.native_articles
|
||||
ADD COLUMN IF NOT EXISTS scheduled_at TIMESTAMPTZ,
|
||||
ADD COLUMN IF NOT EXISTS submitted_for_review_at TIMESTAMPTZ;
|
||||
|
||||
-- 3. Add status index for pending on both tables
|
||||
CREATE INDEX IF NOT EXISTS idx_wp_imported_posts_status ON public.wp_imported_posts(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_wp_imported_posts_scheduled_at ON public.wp_imported_posts(scheduled_at) WHERE scheduled_at IS NOT NULL;
|
||||
CREATE INDEX IF NOT EXISTS idx_native_articles_scheduled_at ON public.native_articles(scheduled_at) WHERE scheduled_at IS NOT NULL;
|
||||
|
||||
-- 4. Function to auto-publish scheduled articles (called via cron or on-demand)
|
||||
CREATE OR REPLACE FUNCTION public.publish_scheduled_articles()
|
||||
RETURNS INTEGER
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
published_count INTEGER := 0;
|
||||
native_count INTEGER := 0;
|
||||
BEGIN
|
||||
-- Publish scheduled wp_imported_posts
|
||||
UPDATE public.wp_imported_posts
|
||||
SET status = 'published', scheduled_at = NULL, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE status = 'draft'
|
||||
AND scheduled_at IS NOT NULL
|
||||
AND scheduled_at <= CURRENT_TIMESTAMP;
|
||||
GET DIAGNOSTICS published_count = ROW_COUNT;
|
||||
|
||||
-- Publish scheduled native_articles
|
||||
UPDATE public.native_articles
|
||||
SET status = 'published', scheduled_at = NULL, published_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP
|
||||
WHERE status = 'draft'
|
||||
AND scheduled_at IS NOT NULL
|
||||
AND scheduled_at <= CURRENT_TIMESTAMP;
|
||||
GET DIAGNOSTICS native_count = ROW_COUNT;
|
||||
|
||||
published_count := published_count + native_count;
|
||||
|
||||
RETURN published_count;
|
||||
END;
|
||||
$$;
|
||||
Reference in New Issue
Block a user