Cleaned up recent records
X-Lovable-Edit-ID: edt-03bb9849-2b2c-406d-a652-614e730ba47d Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
-- Remove clients & contacts created in the last 24 hours (the bulk-imported batch).
|
||||
-- Cascading clean-up of dependent rows that don't have ON DELETE CASCADE.
|
||||
|
||||
-- 1. Identify target sets
|
||||
WITH del_clients AS (
|
||||
SELECT id FROM public.clients WHERE created_at >= now() - interval '24 hours'
|
||||
),
|
||||
del_contacts AS (
|
||||
SELECT id FROM public.contacts WHERE created_at >= now() - interval '24 hours'
|
||||
),
|
||||
-- Homeowners belonging to those clients
|
||||
del_homeowners AS (
|
||||
SELECT id FROM public.homeowners WHERE client_id IN (SELECT id FROM del_clients)
|
||||
),
|
||||
-- Cases belonging to those clients
|
||||
del_cases AS (
|
||||
SELECT id FROM public.cases WHERE client_id IN (SELECT id FROM del_clients)
|
||||
),
|
||||
-- Collections under those cases / homeowners
|
||||
del_collections AS (
|
||||
SELECT id FROM public.collections
|
||||
WHERE case_id IN (SELECT id FROM del_cases)
|
||||
OR homeowner_id IN (SELECT id FROM del_homeowners)
|
||||
),
|
||||
-- Invoices belonging to those clients / cases
|
||||
del_invoices AS (
|
||||
SELECT id FROM public.invoices
|
||||
WHERE client_id IN (SELECT id FROM del_clients)
|
||||
OR case_id IN (SELECT id FROM del_cases)
|
||||
)
|
||||
-- Materialise into temp tables for reuse across statements
|
||||
SELECT id INTO TEMP TABLE _del_clients FROM del_clients;
|
||||
WITH t AS (SELECT id FROM public.contacts WHERE created_at >= now() - interval '24 hours')
|
||||
SELECT id INTO TEMP TABLE _del_contacts FROM t;
|
||||
WITH t AS (SELECT id FROM public.homeowners WHERE client_id IN (SELECT id FROM _del_clients))
|
||||
SELECT id INTO TEMP TABLE _del_homeowners FROM t;
|
||||
WITH t AS (SELECT id FROM public.cases WHERE client_id IN (SELECT id FROM _del_clients))
|
||||
SELECT id INTO TEMP TABLE _del_cases FROM t;
|
||||
WITH t AS (
|
||||
SELECT id FROM public.collections
|
||||
WHERE case_id IN (SELECT id FROM _del_cases)
|
||||
OR homeowner_id IN (SELECT id FROM _del_homeowners)
|
||||
)
|
||||
SELECT id INTO TEMP TABLE _del_collections FROM t;
|
||||
WITH t AS (
|
||||
SELECT id FROM public.invoices
|
||||
WHERE client_id IN (SELECT id FROM _del_clients)
|
||||
OR case_id IN (SELECT id FROM _del_cases)
|
||||
)
|
||||
SELECT id INTO TEMP TABLE _del_invoices FROM t;
|
||||
|
||||
-- 2. Delete dependents bottom-up
|
||||
-- Collections sub-data
|
||||
DELETE FROM public.payment_plan_installments WHERE plan_id IN (SELECT id FROM public.payment_plans WHERE collection_id IN (SELECT id FROM _del_collections));
|
||||
DELETE FROM public.payment_plans WHERE collection_id IN (SELECT id FROM _del_collections);
|
||||
DELETE FROM public.collection_payment_allocations WHERE collection_id IN (SELECT id FROM _del_collections);
|
||||
DELETE FROM public.collection_ledger_entries WHERE collection_id IN (SELECT id FROM _del_collections);
|
||||
DELETE FROM public.collection_tasks WHERE collection_id IN (SELECT id FROM _del_collections);
|
||||
DELETE FROM public.collections WHERE id IN (SELECT id FROM _del_collections);
|
||||
|
||||
-- Invoice sub-data
|
||||
DELETE FROM public.invoice_payments WHERE invoice_id IN (SELECT id FROM _del_invoices);
|
||||
DELETE FROM public.invoice_line_items WHERE invoice_id IN (SELECT id FROM _del_invoices);
|
||||
UPDATE public.expenses SET invoice_id = NULL WHERE invoice_id IN (SELECT id FROM _del_invoices);
|
||||
DELETE FROM public.invoices WHERE id IN (SELECT id FROM _del_invoices);
|
||||
|
||||
-- Case sub-data
|
||||
DELETE FROM public.expenses WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.call_logs WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.documents WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.document_folders WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.case_field_values WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.case_contacts WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.status_updates WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.events WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.tasks WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.comments WHERE case_id IN (SELECT id FROM _del_cases);
|
||||
DELETE FROM public.cases WHERE id IN (SELECT id FROM _del_cases);
|
||||
|
||||
-- Homeowner sub-data
|
||||
DELETE FROM public.call_logs WHERE homeowner_id IN (SELECT id FROM _del_homeowners);
|
||||
DELETE FROM public.homeowners WHERE id IN (SELECT id FROM _del_homeowners);
|
||||
|
||||
-- Contact sub-data
|
||||
DELETE FROM public.case_contacts WHERE contact_id IN (SELECT id FROM _del_contacts);
|
||||
DELETE FROM public.client_contacts WHERE contact_id IN (SELECT id FROM _del_contacts);
|
||||
DELETE FROM public.call_logs WHERE contact_id IN (SELECT id FROM _del_contacts);
|
||||
DELETE FROM public.contacts WHERE id IN (SELECT id FROM _del_contacts);
|
||||
|
||||
-- Client sub-data
|
||||
DELETE FROM public.client_contacts WHERE client_id IN (SELECT id FROM _del_clients);
|
||||
DELETE FROM public.events WHERE client_id IN (SELECT id FROM _del_clients);
|
||||
DELETE FROM public.clients WHERE id IN (SELECT id FROM _del_clients);
|
||||
|
||||
DROP TABLE _del_clients, _del_contacts, _del_homeowners, _del_cases, _del_collections, _del_invoices;
|
||||
Reference in New Issue
Block a user