-- 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