Skip to content

[departments] Cascade-delete salary scale entries on department deletion#1114

Open
mxatmx wants to merge 1 commit into
cgwire:mainfrom
mxatmx:fix/department-salary-scale-cascade-upstream
Open

[departments] Cascade-delete salary scale entries on department deletion#1114
mxatmx wants to merge 1 commit into
cgwire:mainfrom
mxatmx:fix/department-salary-scale-cascade-upstream

Conversation

@mxatmx

@mxatmx mxatmx commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

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.

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant