ALTER TABLE brand_questions
    ADD COLUMN IF NOT EXISTS question_text TEXT;

DO $$
BEGIN
    IF to_regclass('public.brand_question_versions') IS NOT NULL
        AND EXISTS (
            SELECT 1
            FROM information_schema.columns
            WHERE table_schema = 'public'
              AND table_name = 'brand_questions'
              AND column_name = 'current_version_id'
        )
    THEN
        EXECUTE $sql$
            UPDATE brand_questions q
            SET question_text = COALESCE(
                (
                    SELECT v.question_text
                    FROM brand_question_versions v
                    WHERE v.id = q.current_version_id
                    LIMIT 1
                ),
                (
                    SELECT v.question_text
                    FROM brand_question_versions v
                    WHERE v.question_id = q.id
                    ORDER BY v.version_no DESC, v.id DESC
                    LIMIT 1
                ),
                q.question_text,
                ''
            )
            WHERE q.question_text IS NULL
        $sql$;
    ELSIF to_regclass('public.brand_question_versions') IS NOT NULL THEN
        EXECUTE $sql$
            UPDATE brand_questions q
            SET question_text = COALESCE(
                (
                    SELECT v.question_text
                    FROM brand_question_versions v
                    WHERE v.question_id = q.id
                    ORDER BY v.version_no DESC, v.id DESC
                    LIMIT 1
                ),
                q.question_text,
                ''
            )
            WHERE q.question_text IS NULL
        $sql$;
    END IF;
END $$;

UPDATE brand_questions
SET question_text = ''
WHERE question_text IS NULL;

ALTER TABLE brand_questions
    ALTER COLUMN question_text SET NOT NULL;

ALTER TABLE brand_questions
    DROP COLUMN IF EXISTS current_version_id;

DROP TABLE IF EXISTS brand_question_versions;
