Spaces:
Sleeping
Sleeping
| -- Additive approval workspace integrity migration. | |
| -- | |
| -- This migration brings the existing approval domain in line with the | |
| -- authoritative ORM models and closes the confirmed cross-workspace | |
| -- authorization gap by backfilling approval requests with their owning | |
| -- workflow workspace, enforcing the relationship, and adding an index | |
| -- used by authorization checks. | |
| -- | |
| -- Apply after 0013_notification_preferences.sql. | |
| begin; | |
| alter table approval_requests | |
| add column if not exists workspace_id text; | |
| do $$ | |
| begin | |
| if exists ( | |
| select 1 | |
| from approval_requests | |
| where workspace_id is null | |
| ) then | |
| update approval_requests | |
| set workspace_id = approval_workflows.workspace_id | |
| from approval_workflows | |
| where approval_workflows.id = approval_requests.workflow_id | |
| and approval_requests.workspace_id is null; | |
| end if; | |
| end $$; | |
| alter table approval_requests | |
| alter column workspace_id set not null; | |
| alter table approval_requests | |
| drop constraint if exists approval_requests_workflow_id_fkey, | |
| add constraint approval_requests_workflow_id_fkey | |
| foreign key (workflow_id) references approval_workflows(id) on delete cascade; | |
| create index if not exists ix_approval_requests_workspace | |
| on approval_requests(workspace_id); | |
| commit; | |