← back to NationalPaperHangers
db/migrations/015_featured_video_urls_check.sql
21 lines
-- 015 · CHECK constraint on installers.featured_video_urls
--
-- 014 added the column with NOT NULL DEFAULT '[]'::jsonb. NOT NULL alone
-- doesn't prevent UPDATE … SET featured_video_urls = '"oops"'::jsonb (a
-- jsonb string), which would later break the partial-index expression
-- jsonb_array_length() with "cannot get array length of a non-array".
--
-- Hardening per claude-codex r3 finding MEDIUM#7. Drop-create pattern keeps
-- this re-runnable.
BEGIN;
ALTER TABLE installers
DROP CONSTRAINT IF EXISTS installers_featured_video_urls_is_array;
ALTER TABLE installers
ADD CONSTRAINT installers_featured_video_urls_is_array
CHECK (jsonb_typeof(featured_video_urls) = 'array');
COMMIT;