36 lines
1.7 KiB
SQL
36 lines
1.7 KiB
SQL
-- Permite excluir contas do painel sem perder a auditoria.
|
|
-- Sessões da conta são apagadas junto; auditoria e configurações perdem só o
|
|
-- vínculo, e a auditoria guarda o nome da conta em actor_account_name.
|
|
|
|
-- +goose Up
|
|
ALTER TABLE audit_logs ADD COLUMN actor_account_name text;
|
|
UPDATE audit_logs a SET actor_account_name = wa.username::text
|
|
FROM web_accounts wa WHERE wa.id = a.actor_account;
|
|
|
|
ALTER TABLE web_sessions DROP CONSTRAINT web_sessions_account_id_fkey;
|
|
ALTER TABLE web_sessions ADD CONSTRAINT web_sessions_account_id_fkey
|
|
FOREIGN KEY (account_id) REFERENCES web_accounts(id) ON DELETE CASCADE;
|
|
|
|
ALTER TABLE audit_logs DROP CONSTRAINT audit_logs_actor_account_fkey;
|
|
ALTER TABLE audit_logs ADD CONSTRAINT audit_logs_actor_account_fkey
|
|
FOREIGN KEY (actor_account) REFERENCES web_accounts(id) ON DELETE SET NULL;
|
|
|
|
ALTER TABLE app_settings DROP CONSTRAINT app_settings_updated_by_account_fkey;
|
|
ALTER TABLE app_settings ADD CONSTRAINT app_settings_updated_by_account_fkey
|
|
FOREIGN KEY (updated_by_account) REFERENCES web_accounts(id) ON DELETE SET NULL;
|
|
|
|
-- +goose Down
|
|
ALTER TABLE app_settings DROP CONSTRAINT app_settings_updated_by_account_fkey;
|
|
ALTER TABLE app_settings ADD CONSTRAINT app_settings_updated_by_account_fkey
|
|
FOREIGN KEY (updated_by_account) REFERENCES web_accounts(id);
|
|
|
|
ALTER TABLE audit_logs DROP CONSTRAINT audit_logs_actor_account_fkey;
|
|
ALTER TABLE audit_logs ADD CONSTRAINT audit_logs_actor_account_fkey
|
|
FOREIGN KEY (actor_account) REFERENCES web_accounts(id);
|
|
|
|
ALTER TABLE web_sessions DROP CONSTRAINT web_sessions_account_id_fkey;
|
|
ALTER TABLE web_sessions ADD CONSTRAINT web_sessions_account_id_fkey
|
|
FOREIGN KEY (account_id) REFERENCES web_accounts(id);
|
|
|
|
ALTER TABLE audit_logs DROP COLUMN actor_account_name;
|