Files
bot-pontos/backend/db/migrations/00003_web_account_delete.sql
2026-10-30 23:25:38 -03:00

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;