CREATE TABLE IF NOT EXISTS navigation_items ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), label TEXT NOT NULL, url TEXT NOT NULL, location TEXT NOT NULL DEFAULT 'primary', sort_order INTEGER NOT NULL DEFAULT 0, is_visible BOOLEAN NOT NULL DEFAULT true, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE (location, label, url), CONSTRAINT navigation_items_location_check CHECK (location IN ('primary', 'footer')) ); CREATE INDEX IF NOT EXISTS navigation_items_location_sort_order_idx ON navigation_items (location, sort_order ASC, label ASC); INSERT INTO navigation_items (label, url, location, sort_order, is_visible) SELECT seed.label, seed.url, seed.location, seed.sort_order, seed.is_visible FROM ( VALUES ('Home pages', '/', 'primary', 10, true), ('Tags', '/tags', 'primary', 20, true), ('Authors', '/pages/about', 'primary', 30, true), ('Style', '/post/hello-sori-studio', 'primary', 40, true), ('Post types', '/post/custom-writing-tool', 'primary', 50, true), ('Members', '/pages/contact', 'primary', 60, true), ('Landing pages', '/pages/projects', 'primary', 70, true), ('Portal', '/pages/links', 'footer', 10, true), ('Docs', '/pages/about', 'footer', 20, true), ('Projects', '/pages/projects', 'footer', 30, true) ) AS seed(label, url, location, sort_order, is_visible) WHERE NOT EXISTS ( SELECT 1 FROM navigation_items existing WHERE existing.location = seed.location AND existing.label = seed.label AND existing.url = seed.url );