[departments] Cascade-delete salary scale entries on department deletion#1114
Open
mxatmx wants to merge 1 commit into
Open
[departments] Cascade-delete salary scale entries on department deletion#1114mxatmx wants to merge 1 commit into
mxatmx wants to merge 1 commit into
Conversation
Problem: departments could not be deleted once the budget salary scale page had been opened. Loading GET /data/salary-scales auto-creates a salary_scale row for every department/position/seniority combination, and salary_scale.department_id referenced department.id without an ON DELETE rule (default RESTRICT). Deleting a department then raised an IntegrityError (surfaced as a generic 400), and there is no UI or bulk API to clear the referencing rows first, leaving the department permanently undeletable. Solution: recreate the foreign key with ON DELETE CASCADE so the auto-generated, department-scoped salary scale rows are removed together with their department. Adds the model change, an Alembic migration that swaps the constraint, and a regression test covering the cascade. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem: departments could not be deleted once the budget salary scale page had been opened. Loading GET /data/salary-scales auto-creates a salary_scale row for every department/position/seniority combination, and salary_scale.department_id referenced department.id without an ON DELETE rule (default RESTRICT). Deleting a department then raised an IntegrityError (surfaced as a generic 400), and there is no UI or bulk API to clear the referencing rows first, leaving the department permanently undeletable.
Solution: recreate the foreign key with ON DELETE CASCADE so the auto-generated, department-scoped salary scale rows are removed together with their department. Adds the model change, an Alembic migration that swaps the constraint, and a regression test covering the cascade.