Files
polskalokalnie/scripts/minimize-user-data.sql
T
debian cf02f480ed
Deploy Polska Lokalnie / deploy (push) Successful in 22s
górne menu - wiadomości
2026-09-25 10:09:33 +02:00

48 lines
2.3 KiB
PL/PgSQL

-- Minimalizacja danych w kontach uzytkownikow (art. 5 ust. 1 lit. c RODO).
--
-- 2026-09-25 z ustawien konta znikly dwa pola, ktore nie mialy celu:
--
-- * data urodzenia - zbierana od osob prywatnych i nieuzywana przez zadna funkcje serwisu
-- (brak weryfikacji wieku, brak wymogu prawnego). Kolumna app_users.birth_date zostaje
-- w bazie, ale kod juz jej nie czyta ani nie zapisuje - ten skrypt czysci wartosci.
--
-- * adres zamieszkania osoby prywatnej - do kontaktu sluzy e-mail i telefon, a adres
-- nieruchomosci stoi przy ogloszeniu. Adres zostaje wylacznie kontom firmowym, gdzie jest
-- siedziba przedsiebiorcy (dana jawna z CEIDG/KRS). Skrypt kasuje adresy kont PERSONAL.
--
-- Domyslnie PROBA NA SUCHO: wszystko w jednej transakcji, skrypt pokazuje 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/minimize-user-data.sql
-- docker exec -i polskalokalnie-db-1 psql -U polskalokalnie -d polskalokalnie -v apply=1 < scripts/minimize-user-data.sql
\set ON_ERROR_STOP on
\if :{?apply}
\else
\set apply 0
\endif
BEGIN;
\echo '=== Stan przed ==='
SELECT 'konta razem' AS co, count(*) AS ile FROM app_users
UNION ALL SELECT 'z data urodzenia', count(*) FROM app_users WHERE birth_date IS NOT NULL
UNION ALL SELECT 'konta prywatne z adresem', count(*) FROM app_users WHERE account_type = 'PERSONAL' AND address IS NOT NULL
UNION ALL SELECT 'konta firmowe z adresem (zostaja)', count(*) FROM app_users WHERE account_type = 'COMPANY' AND address IS NOT NULL;
UPDATE app_users SET birth_date = NULL WHERE birth_date IS NOT NULL;
UPDATE app_users SET address = NULL WHERE account_type = 'PERSONAL' AND address IS NOT NULL;
\echo '=== Stan po ==='
SELECT 'z data urodzenia' AS co, count(*) AS ile FROM app_users WHERE birth_date IS NOT NULL
UNION ALL SELECT 'konta prywatne z adresem', count(*) FROM app_users WHERE account_type = 'PERSONAL' AND address IS NOT NULL
UNION ALL SELECT 'konta firmowe z adresem (zostaja)', count(*) FROM app_users WHERE account_type = 'COMPANY' AND address IS NOT NULL;
\if :apply
COMMIT;
\echo '>>> ZAPISANO (COMMIT) - daty urodzenia wyczyszczone, adresy kont prywatnych usuniete'
\else
ROLLBACK;
\echo '>>> PROBA NA SUCHO - nic nie zostalo zmienione (ROLLBACK). Zapis: -v apply=1'
\endif