init
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user