-- =============================================================================
-- F1b — Decisão de roteamento anon: 6 tabelas anon-facing FICAM em public
--
-- Fluxos anônimos identificam o tenant por TOKEN/SLUG (não por login), então
-- não conseguem resolver o schema físico. Decisão (2026-06-13, opção C):
-- manter essas tabelas em public com tenant_id + RLS por token, como hoje.
--
--   patient_intake_requests   — intake de paciente por convite (token)
--   patient_invites           — tokens de convite
--   patient_invite_attempts   — rate-limit anon dos convites
--   document_share_links      — assinatura pública de documento (token)
--   agendador_configuracoes   — agendador público (link_slug)
--   agendador_solicitacoes    — solicitação criada por visitante anon
--
-- Logo, REMOVE essas 6 do _tenant_template (não viram schema do tenant).
-- O clone_tenant_template itera as tabelas do template dinamicamente, então
-- novos clones nascem sem elas automaticamente. Classificação final:
-- 78 tenant-scoped + 59 globais (era 84 + 53).
--
-- Nota F6: public.document_share_links.documento_id tem FK -> documents, que
-- VAI pro schema do tenant. No drop de public.documents (F6), essa FK precisa
-- virar coluna solta (uuid sem constraint) — o RPC valida via token. Idem
-- qualquer FK public->tenant dessas 6 (registrar no lote de FKs da F6).
-- =============================================================================

BEGIN;

DO $$
DECLARE
    anon_tabs text[] := ARRAY[
        'patient_intake_requests','patient_invites','patient_invite_attempts',
        'document_share_links','agendador_configuracoes','agendador_solicitacoes'
    ];
    t text;
BEGIN
    FOREACH t IN ARRAY anon_tabs LOOP
        IF EXISTS (SELECT 1 FROM information_schema.tables
                   WHERE table_schema = '_tenant_template' AND table_name = t) THEN
            EXECUTE format('DROP TABLE _tenant_template.%I CASCADE', t);
            RAISE NOTICE 'F1b: _tenant_template.% removida (fica em public)', t;
        END IF;
        -- defensivo: tira do registro de realtime do template, se estiver lá
        DELETE FROM _tenant_template._realtime_tables WHERE table_name = t;
    END LOOP;
END $$;

UPDATE _tenant_template._meta SET value = '2'::jsonb WHERE key = 'template_version';

COMMIT;
