232 lines
13 KiB
SQL
232 lines
13 KiB
SQL
-- ============================================================
|
|
-- CLEANUP — Remove TODOS os dados de seed/teste
|
|
-- AgenciaPsi — 2026-03-22
|
|
-- ============================================================
|
|
-- Remove dados criados por seed_test_data.sql:
|
|
-- - 10 terapeutas fictícios (aaaaaaaa-*)
|
|
-- - 10 tenants fictícios (bbbbbbbb-*)
|
|
-- - 50 pacientes fictícios (cccccccc-*)
|
|
-- - Eventos, financeiro, grupos, recorrências
|
|
-- - Dados seed do terapeuta@agenciapsi.com.br ([SEED])
|
|
-- - Notification queue/logs dos tenants de teste
|
|
-- - Addon credits/transactions dos tenants de teste
|
|
--
|
|
-- SEGURO: Não apaga dados reais (apenas UUIDs/emails conhecidos)
|
|
-- ============================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
_tenant_ids uuid[] := ARRAY[
|
|
'bbbbbbbb-0000-0000-0000-000000000001'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000002'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000003'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000004'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000005'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000006'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000007'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000008'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000009'::uuid,
|
|
'bbbbbbbb-0000-0000-0000-000000000010'::uuid
|
|
];
|
|
_user_ids uuid[] := ARRAY[
|
|
'aaaaaaaa-0000-0000-0000-000000000001'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000002'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000003'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000004'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000005'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000006'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000007'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000008'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000009'::uuid,
|
|
'aaaaaaaa-0000-0000-0000-000000000010'::uuid
|
|
];
|
|
_real_oid uuid;
|
|
_real_tid uuid;
|
|
_deleted int;
|
|
_total int := 0;
|
|
BEGIN
|
|
RAISE NOTICE '══════════════════════════════════════════';
|
|
RAISE NOTICE ' CLEANUP — Removendo dados de teste...';
|
|
RAISE NOTICE '══════════════════════════════════════════';
|
|
|
|
-- ── Notification queue e logs (tenants fictícios) ──────────
|
|
DELETE FROM public.notification_logs WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_logs: % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_queue WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_queue: % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_preferences WHERE owner_id = ANY(_user_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_preferences: % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_schedules WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_schedules: % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_channels WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_channels: % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_templates WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_templates: % removidos', _deleted;
|
|
|
|
-- ── Addon credits/transactions (tenants fictícios) ─────────
|
|
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'addon_transactions') THEN
|
|
DELETE FROM public.addon_transactions WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' addon_transactions: % removidos', _deleted;
|
|
END IF;
|
|
|
|
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'addon_credits') THEN
|
|
DELETE FROM public.addon_credits WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' addon_credits: % removidos', _deleted;
|
|
END IF;
|
|
|
|
-- ── Financeiro ─────────────────────────────────────────────
|
|
DELETE FROM public.financial_records WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' financial_records: % removidos', _deleted;
|
|
|
|
-- ── Eventos agenda ─────────────────────────────────────────
|
|
DELETE FROM public.agenda_eventos WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' agenda_eventos: % removidos', _deleted;
|
|
|
|
-- ── Recorrências ───────────────────────────────────────────
|
|
DELETE FROM public.recurrence_rules WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' recurrence_rules: % removidos', _deleted;
|
|
|
|
-- ── Grupos ─────────────────────────────────────────────────
|
|
DELETE FROM public.patient_group_patient WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' patient_group_patient: % removidos', _deleted;
|
|
|
|
DELETE FROM public.patient_groups WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' patient_groups: % removidos', _deleted;
|
|
|
|
-- ── Pacientes ──────────────────────────────────────────────
|
|
DELETE FROM public.patients WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' patients: % removidos', _deleted;
|
|
|
|
-- ── Regras semanais ────────────────────────────────────────
|
|
DELETE FROM public.agenda_regras_semanais WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' agenda_regras_semanais: % removidos', _deleted;
|
|
|
|
-- ── Serviços ───────────────────────────────────────────────
|
|
DELETE FROM public.services WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' services: % removidos', _deleted;
|
|
|
|
-- ── Tenant members ─────────────────────────────────────────
|
|
DELETE FROM public.tenant_members WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' tenant_members: % removidos', _deleted;
|
|
|
|
-- ── Company profiles ───────────────────────────────────────
|
|
DELETE FROM public.company_profiles WHERE tenant_id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' company_profiles: % removidos', _deleted;
|
|
|
|
-- ── Tenants ────────────────────────────────────────────────
|
|
DELETE FROM public.tenants WHERE id = ANY(_tenant_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' tenants: % removidos', _deleted;
|
|
|
|
-- ── Profiles ───────────────────────────────────────────────
|
|
DELETE FROM public.profiles WHERE id = ANY(_user_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' profiles: % removidos', _deleted;
|
|
|
|
-- ── Auth users ─────────────────────────────────────────────
|
|
ALTER TABLE auth.users DISABLE TRIGGER ALL;
|
|
DELETE FROM auth.identities WHERE user_id = ANY(_user_ids);
|
|
DELETE FROM auth.users WHERE id = ANY(_user_ids);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' auth.users: % removidos', _deleted;
|
|
ALTER TABLE auth.users ENABLE TRIGGER ALL;
|
|
|
|
-- ══════════════════════════════════════════════════════════
|
|
-- DADOS [SEED] DO terapeuta@agenciapsi.com.br
|
|
-- ══════════════════════════════════════════════════════════
|
|
SELECT id INTO _real_oid FROM auth.users WHERE email = 'terapeuta@agenciapsi.com.br';
|
|
|
|
IF _real_oid IS NOT NULL THEN
|
|
SELECT t.id INTO _real_tid
|
|
FROM public.tenants t
|
|
JOIN public.tenant_members tm ON tm.tenant_id = t.id
|
|
WHERE tm.user_id = _real_oid
|
|
LIMIT 1;
|
|
|
|
IF _real_tid IS NOT NULL THEN
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE ' Limpando [SEED] de terapeuta@agenciapsi.com.br...';
|
|
|
|
-- Notification queue/logs deste tenant (apenas os de teste)
|
|
DELETE FROM public.notification_logs WHERE tenant_id = _real_tid
|
|
AND queue_id IN (SELECT id FROM public.notification_queue WHERE tenant_id = _real_tid);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_logs (real): % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_queue WHERE tenant_id = _real_tid;
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notification_queue (real):% removidos', _deleted;
|
|
|
|
-- Financeiro [SEED]
|
|
DELETE FROM public.financial_records WHERE tenant_id = _real_tid AND description LIKE '[SEED]%';
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' financial_records [SEED]: % removidos', _deleted;
|
|
|
|
-- Eventos [SEED]
|
|
DELETE FROM public.agenda_eventos WHERE tenant_id = _real_tid AND titulo LIKE '[SEED]%';
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' agenda_eventos [SEED]: % removidos', _deleted;
|
|
|
|
-- Recorrências [SEED]
|
|
DELETE FROM public.recurrence_rules WHERE tenant_id = _real_tid AND observacoes = '[SEED]';
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' recurrence_rules [SEED]: % removidos', _deleted;
|
|
|
|
-- Grupos [SEED]
|
|
DELETE FROM public.patient_group_patient WHERE tenant_id = _real_tid AND patient_id IN (
|
|
SELECT id FROM public.patients WHERE tenant_id = _real_tid AND email_principal LIKE '%@seed.teste.agenciapsi.com'
|
|
);
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' group_patient [SEED]: % removidos', _deleted;
|
|
|
|
DELETE FROM public.patient_groups WHERE tenant_id = _real_tid AND nome LIKE '%[SEED]%';
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' patient_groups [SEED]: % removidos', _deleted;
|
|
|
|
-- Pacientes seed
|
|
DELETE FROM public.patients WHERE tenant_id = _real_tid AND email_principal LIKE '%@seed.teste.agenciapsi.com';
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' patients [SEED]: % removidos', _deleted;
|
|
|
|
-- Regras semanais e schedules (reseta tudo deste owner)
|
|
DELETE FROM public.agenda_regras_semanais WHERE tenant_id = _real_tid AND owner_id = _real_oid;
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' regras_semanais (real): % removidos', _deleted;
|
|
|
|
DELETE FROM public.notification_schedules WHERE tenant_id = _real_tid AND owner_id = _real_oid;
|
|
GET DIAGNOSTICS _deleted = ROW_COUNT; _total := _total + _deleted;
|
|
RAISE NOTICE ' notif_schedules (real): % removidos', _deleted;
|
|
END IF;
|
|
ELSE
|
|
RAISE NOTICE ' terapeuta@agenciapsi.com.br não encontrado — pulando';
|
|
END IF;
|
|
|
|
RAISE NOTICE '';
|
|
RAISE NOTICE '══════════════════════════════════════════';
|
|
RAISE NOTICE ' CLEANUP COMPLETO — % registros removidos', _total;
|
|
RAISE NOTICE '══════════════════════════════════════════';
|
|
END $$;
|