DO $$ 
BEGIN 
    -- 1. Analysis/Scoring Columns
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='tone_label') THEN
        ALTER TABLE posts ADD COLUMN tone_label TEXT;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='cis_score') THEN
        ALTER TABLE posts ADD COLUMN cis_score NUMERIC;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='moderation_status') THEN
        ALTER TABLE posts ADD COLUMN moderation_status TEXT NOT NULL DEFAULT 'approved';
    END IF;

    -- 2. Post Configuration/Metadata
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='visibility') THEN
        ALTER TABLE posts ADD COLUMN visibility TEXT NOT NULL DEFAULT 'authenticated';
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='expires_at') THEN
        ALTER TABLE posts ADD COLUMN expires_at TIMESTAMPTZ;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='body_format') THEN
        ALTER TABLE posts ADD COLUMN body_format TEXT;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='background_id') THEN
        ALTER TABLE posts ADD COLUMN background_id TEXT;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='tags') THEN
        ALTER TABLE posts ADD COLUMN tags TEXT[];
    END IF;
    
    -- 3. Media
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='thumbnail_url') THEN
        ALTER TABLE posts ADD COLUMN thumbnail_url TEXT;
    END IF;
    
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='video_url') THEN
        ALTER TABLE posts ADD COLUMN video_url TEXT;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='duration_ms') THEN
        ALTER TABLE posts ADD COLUMN duration_ms INTEGER;
    END IF;

    -- 4. Beacons (Geo)
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='location') THEN
        -- Assuming PostGIS extension enabled
        ALTER TABLE posts ADD COLUMN location geography(POINT);
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='is_beacon') THEN
        ALTER TABLE posts ADD COLUMN is_beacon BOOLEAN DEFAULT FALSE;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='beacon_type') THEN
        ALTER TABLE posts ADD COLUMN beacon_type TEXT;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='confidence_score') THEN
        ALTER TABLE posts ADD COLUMN confidence_score DOUBLE PRECISION;
    END IF;

    IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name='posts' AND column_name='is_active_beacon') THEN
        ALTER TABLE posts ADD COLUMN is_active_beacon BOOLEAN DEFAULT FALSE;
    END IF;

END $$;
