This commit is contained in:
2026-10-03 20:39:03 +07:00
parent edb6d910f7
commit 1bbc32c3dc
134 changed files with 3782 additions and 0 deletions
@@ -0,0 +1,39 @@
-- +goose Up
-- Сценарии и команды сохраняются при удалении аккаунта автора:
-- привязка к пользователю обнуляется (обезличивание, ст. 3 152-ФЗ),
-- сам контент остаётся в Сервисе (лицензия по п. 7.2 Пользовательского соглашения).
ALTER TABLE scenarios ALTER COLUMN author_id DROP NOT NULL;
ALTER TABLE scenarios DROP CONSTRAINT IF EXISTS fk_scenarios_author;
ALTER TABLE scenarios ADD CONSTRAINT fk_scenarios_author
FOREIGN KEY (author_id) REFERENCES users (id) ON DELETE SET NULL;
ALTER TABLE teams ALTER COLUMN creator_id DROP NOT NULL;
ALTER TABLE teams DROP CONSTRAINT IF EXISTS fk_teams_creator;
ALTER TABLE teams ADD CONSTRAINT fk_teams_creator
FOREIGN KEY (creator_id) REFERENCES users (id) ON DELETE SET NULL;
-- status у сценариев всегда задан (default 'draft'): NULL-значение сломало бы
-- guard'ы вида "status <> 'public'" в scenarios_repo (NULL даёт NULL, т.е. ложь).
-- На БД с историческими NULL-данными сначала приводим их к default'у.
UPDATE scenarios SET status = 'draft' WHERE status IS NULL;
ALTER TABLE scenarios ALTER COLUMN status SET NOT NULL;
-- +goose Down
-- Восстановление прежней схемы: автор обязателен, при удалении пользователя —
-- удаление его контента запрещено (RESTRICT).
DELETE FROM scenarios WHERE author_id IS NULL;
DELETE FROM teams WHERE creator_id IS NULL;
ALTER TABLE scenarios ALTER COLUMN status DROP NOT NULL;
ALTER TABLE scenarios DROP CONSTRAINT IF EXISTS fk_scenarios_author;
ALTER TABLE scenarios ADD CONSTRAINT fk_scenarios_author
FOREIGN KEY (author_id) REFERENCES users (id) ON DELETE RESTRICT;
ALTER TABLE scenarios ALTER COLUMN author_id SET NOT NULL;
ALTER TABLE teams DROP CONSTRAINT IF EXISTS fk_teams_creator;
ALTER TABLE teams ADD CONSTRAINT fk_teams_creator
FOREIGN KEY (creator_id) REFERENCES users (id) ON DELETE RESTRICT;
ALTER TABLE teams ALTER COLUMN creator_id SET NOT NULL;