PhoenixKit.Migrations.Postgres.V144 (phoenix_kit v1.7.197)

Copy Markdown View Source

V144: Manufacturing/Warehouse module tables consolidation.

Consolidates tables previously created by phoenix_kit_manufacturing's and phoenix_kit_warehouse's own migration_module/0 into core's migration chain — see PR body for the manual-migration note on non-empty legacy directory tables.

Five objects, each idempotent (safe to re-run):

  • phoenix_kit_machines — machine reference-book records. V1 identity columns (name, code, manufacturer, serial_number, description, location_note, status, data, metadata) plus the V2 passport/soft-location columns (model, manufacture_year, commissioned_on, warranty_until, to_last_on, to_interval_days, to_next_on, notes, location_uuid, space_uuid), in their final (module V5-equivalent) shape.
  • phoenix_kit_machine_type_assignments — machine<->machine_type join. machine_uuid is a real FK to phoenix_kit_machines; machine_type_uuid is a soft reference to phoenix_kit_entity_data.uuid (no FK) — machine types now live in phoenix_kit_entities, a separate package this migration doesn't own. On a host upgrading from the published phoenix_kit_manufacturing 0.2.0 (module V1), this table already exists with a live FK on machine_type_uuid (pointing at the phoenix_kit_machine_types directory table below) — CREATE TABLE IF NOT EXISTS is a no-op there, so the FK is dropped by a separate, unconditional step.
  • phoenix_kit_machine_operations — machine<->operation join, same soft-reference shape on operation_uuid. Never published with a live FK on any known external host (0.2.0 predates this table entirely), but the drop is attempted unconditionally anyway, for symmetry with machine_type_uuid above.
  • phoenix_kit_warehouse_transfers (+ its number sequence) and phoenix_kit_warehouse_min_stock — fresh-install-only DDL. The published phoenix_kit_warehouse 0.1.0 shipped no migrations at all (no phoenix_kit_warehouse_transfers/min_stock on any external host), so there is no upgrade path to account for here, unlike the manufacturing tables above.

phoenix_kit_machine_types, phoenix_kit_operations, and phoenix_kit_defect_reasons — the pre-V5 manufacturing directory tables — are not re-created by this migration; they are not one of the five objects it owns. If a host still has one of them (realistic only on an external phoenix_kit_manufacturing 0.2.0 install — our own dev database has never had them, since the module's local migration already carried it to V5), up/1 drops it when empty and leaves it in place (with a RAISE NOTICE) when it still holds rows, so real directory data is never silently destroyed. See the core PR body for the manual data-migration note on such hosts.

Summary

Functions

Drops the five objects up/1 owns, in FK-safe order (dependents before the tables they reference), and restores the version marker to 143.

Functions

down(opts)

Drops the five objects up/1 owns, in FK-safe order (dependents before the tables they reference), and restores the version marker to 143.

Upgrade-host caveat: on a host that started from the published phoenix_kit_manufacturing 0.2.0 (module V1), phoenix_kit_machine_type_assignments pre-dates V144 — it was created by that module's own migration_module/0, not by this migration. down/1 cannot tell the two provenances apart, so it drops that table unconditionally, which is a stricter rollback than "undo only what V144 did" on such a host. Does not touch phoenix_kit_machine_types, phoenix_kit_operations, or phoenix_kit_defect_reasons — those are never owned by V144 (see moduledoc), so rolling back leaves them exactly as up/1 found them, dropped-if-they-were-empty or still in place otherwise.

up(opts)