axe/internal/db/migrations/0013_project_delete_cascade.sql
2026-10-18 22:07:25 +03:00

31 lines
1.9 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 0013_project_delete_cascade — удаление проекта администратором (каскадом).
--
-- Удаление проекта — действие админа (DELETE /projects/:id, RequireRole
-- "admin"). Решение: проект удаляется вместе с заявками, а не запретом 409
-- на непустой проект. Каскады событий/фото на tickets (0006/0008) и
-- объектов/участий на projects (0004) уже есть — здесь пересоздаются
-- только два FK из tickets, чтобы и заявки уходили вместе с проектом:
--
-- tickets (object_id, project_id) → project_objects (id, project_id)
-- каскад нужен, чтобы объекты проекта уносили свои заявки;
-- tickets (project_id, client_id) → projects (id, client_id)
-- каскад: заявка проекта уходит вместе с проектом.
--
-- Ограничения профилей из заявок (client_id/worker_id/assigned_by →
-- profiles) остаются NO ACTION: удаление клиента с заявками — по-прежнему
-- 409 «отключите вместо удаления».
--
-- Применённый файл не редактировать (checksum в schema_migrations).
ALTER TABLE tickets DROP CONSTRAINT IF EXISTS tickets_object_project_fk;
ALTER TABLE tickets ADD CONSTRAINT tickets_object_project_fk
FOREIGN KEY (object_id, project_id)
REFERENCES project_objects (id, project_id)
ON DELETE CASCADE;
ALTER TABLE tickets DROP CONSTRAINT IF EXISTS tickets_project_client_fk;
ALTER TABLE tickets ADD CONSTRAINT tickets_project_client_fk
FOREIGN KEY (project_id, client_id)
REFERENCES projects (id, client_id)
ON DELETE CASCADE;