48 lines
2.3 KiB
PL/PgSQL
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
|