28 lines
1.1 KiB
SQL
28 lines
1.1 KiB
SQL
-- Migration: Add multi-media support to generated_posts
|
|
-- Date: 2026-02-11
|
|
-- Description: Adds media_items JSONB array to support up to 3 images or 1 video per post
|
|
|
|
-- Add media_items column
|
|
ALTER TABLE generated_posts ADD COLUMN IF NOT EXISTS media_items JSONB DEFAULT '[]'::JSONB;
|
|
|
|
-- Add GIN index for performance on JSONB queries
|
|
CREATE INDEX IF NOT EXISTS idx_generated_posts_media_items ON generated_posts USING GIN (media_items);
|
|
|
|
-- Migrate existing image_url to media_items array
|
|
UPDATE generated_posts
|
|
SET media_items = jsonb_build_array(
|
|
jsonb_build_object(
|
|
'type', 'image',
|
|
'url', image_url,
|
|
'order', 0,
|
|
'content_type', 'image/jpeg',
|
|
'uploaded_at', NOW()
|
|
)
|
|
)
|
|
WHERE image_url IS NOT NULL AND media_items = '[]'::JSONB;
|
|
|
|
-- Note: image_url column is kept for backward compatibility
|
|
-- New code should use media_items, but existing code still works
|
|
|
|
COMMENT ON COLUMN generated_posts.media_items IS 'JSONB array of media items (images/videos). Max 3 items. Structure: [{type, url, order, content_type, uploaded_at, metadata}]';
|