Skip to content

Migration 545a5b77e5e8 should handle missing NMA_Radionuclides.thing_id idempotently #572

@kbighorse

Description

@kbighorse

Context

The current data model correctly uses Thing -> NMA_Chemistry_SampleInfo -> NMA_Radionuclides.

Problem

alembic/versions/545a5b77e5e8_add_chemistry_backfill_columns_to_.py upgrade drops NMA_Radionuclides.thing_id and its FK as if always present, while d9f1e2c3b4a5 already drops that column. This can fail in environments with different migration history/state.

Proposed fix

  • Make 545a5b77e5e8 drop logic defensive (introspect columns/constraints before dropping).
  • Keep downgrade restoration safe (add nullable, backfill from NMA_Chemistry_SampleInfo.thing_id, then enforce NOT NULL + FK).
  • Add migration tests for both preconditions (thing_id present vs already absent).

Acceptance criteria

  • alembic upgrade head succeeds in both preconditions.
  • Downgrade of 545a5b77e5e8 succeeds with existing radionuclide rows.
  • Runtime association model remains unchanged (NMA_Radionuclides linked via chemistry_sample_info_id).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions