PhoenixKit.Migrations.Postgres.V123 (phoenix_kit v1.7.133)

Copy Markdown View Source

V123: Catalogue folders — a dedicated nesting layer for organizing catalogues on the admin catalogue index.

Creates phoenix_kit_cat_folders (self-nesting via parent_uuid) and adds a nullable folder_uuid FK to phoenix_kit_cat_catalogues so a catalogue can live inside a folder (NULL = unfiled / root). These folders are their own thing — unrelated to the media-folder system (phoenix_kit_media_folders) — and never appear in the media browser.

Each folder carries position (manual order within its parent), status (soft-delete sentinel, parity with catalogues/categories), and a data JSONB blob for future metadata. parent_uuid is ON DELETE :nilify_all so a hard-deleted parent orphan-promotes its children to root rather than cascading; phoenix_kit_cat_catalogues.folder_uuid is ON DELETE SET NULL for the same reason (removing a folder unfiles its catalogues, never deletes them).

Also drops the global unique index on phoenix_kit_cat_items.sku (created in V87): item SKUs are not unique by design — the same SKU can legitimately appear on multiple items, even within one catalogue — so the partial unique index (WHERE sku IS NOT NULL) was an over-constraint that raised on duplicate SKUs. down/1 restores it.

All operations are idempotent (create_if_not_exists / IF NOT EXISTS guards) so re-running on a partially-applied schema is a no-op.

Summary

Functions

down(opts)

up(opts)