Skip to content

[DRY/Clean Code] Introduce an application-assignment row model and unified grid change contract #62

Description

@github-actions

Audit finding

ApplicationProfilesGrid repeats executable-path validation in four event-args classes and repeats domain-to-cell mapping in AddRow and UpdateApplication.

Selector columns repeat construction properties, and change dispatch is a long column-name conditional that must be edited for every field.

The grid therefore owns too many representations of the same row truth.

Target state

Introduce:

  • an immutable ApplicationAssignmentRow view model;
  • one mapper from assignment/settings to row;
  • one typed ApplicationAssignmentChange contract (or focused equivalent);
  • one selector-column factory/definition table.

The grid must remain independent of persistence and transaction logic.

Acceptance criteria

  • Row creation and row update use the same mapper.
  • Executable-path validation is defined once.
  • Adding a new editable assignment field requires one column definition and one typed mapping path.
  • No object-typed change payload is introduced.
  • Data-error recovery remains restricted to selector formatting/display contexts.
  • Existing selection preservation and failed-cell restoration behavior remains covered by tests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions