diff --git a/scripts/cleanup-campaigns.sql b/scripts/cleanup-campaigns.sql new file mode 100644 index 0000000..3ecb693 --- /dev/null +++ b/scripts/cleanup-campaigns.sql @@ -0,0 +1,53 @@ +-- Czyszczenie kampanii marketingowych: usuwa WSZYSTKIE kampanie razem z ich kolejkami +-- odbiorcow (tabele campaigns i campaign_recipients). +-- +-- Po co: do 2026-09-23 zaden proces nie wysylal kampanii z kolejki - kampania wchodzila +-- w status "wysylanie" i tak zostawala. Po wdrozeniu wysylki (CampaignSender) takie stare +-- kampanie ruszylyby naprawde. Ten skrypt czysci tabele przed pierwsza prawdziwa wysylka. +-- +-- Domyslnie PROBA NA SUCHO: wszystko dzieje sie w jednej transakcji, skrypt wypisuje stan +-- przed i po, po czym robi ROLLBACK. Zapis nastepuje tylko z -v apply=1. +-- +-- docker exec -i polskalokalnie-db-1 psql -U polskalokalnie -d polskalokalnie < scripts/cleanup-campaigns.sql +-- docker exec -i polskalokalnie-db-1 psql -U polskalokalnie -d polskalokalnie -v apply=1 < scripts/cleanup-campaigns.sql +-- +-- NIE rusza: leadow ani ich zgod marketingowych, grup docelowych, zapytan o reklame, +-- konfiguracji SMTP/SMS. Znika wylacznie historia kampanii i ich kolejki wysylkowe. + +\set ON_ERROR_STOP on +\if :{?apply} +\else + \set apply 0 +\endif + +BEGIN; + +\echo '=== Stan przed czyszczeniem ===' +SELECT 'kampanie' AS co, count(*) AS ile FROM campaigns +UNION ALL SELECT 'pozycje w kolejkach', count(*) FROM campaign_recipients +UNION ALL SELECT 'leady (zostaja)', count(*) FROM leads +UNION ALL SELECT 'grupy docelowe (zostaja)', count(*) FROM target_groups; + +\echo '=== Kampanie wedlug statusu (te w SENDING/SCHEDULED ruszylyby po wdrozeniu wysylki) ===' +SELECT status, count(*) AS ile FROM campaigns GROUP BY status ORDER BY status; + +\echo '=== Ile wiadomosci czeka w kolejkach ===' +SELECT r.status, count(*) AS ile FROM campaign_recipients r GROUP BY r.status ORDER BY r.status; + +-- Najpierw kolejki (maja campaign_id), potem same kampanie. +DELETE FROM campaign_recipients; +DELETE FROM campaigns; + +\echo '=== Stan po czyszczeniu ===' +SELECT 'kampanie' AS co, count(*) AS ile FROM campaigns +UNION ALL SELECT 'pozycje w kolejkach', count(*) FROM campaign_recipients +UNION ALL SELECT 'leady (nietkniete)', count(*) FROM leads +UNION ALL SELECT 'grupy docelowe (nietkniete)', count(*) FROM target_groups; + +\if :apply + COMMIT; + \echo '>>> ZAPISANO ZMIANY (COMMIT) - kampanie i kolejki usuniete' +\else + ROLLBACK; + \echo '>>> PROBA NA SUCHO - nic nie zostalo zmienione (ROLLBACK). Zapis: -v apply=1' +\endif