-- ==========================================================================
-- Agencia PSI — Migracao: RLS notification_channels permite ler soft-deleted
-- ==========================================================================
-- Criado por: Leonardo Nohama
-- Data: 2026-04-23 · Sao Carlos/SP — Brasil
--
-- Contexto: a policy antiga "notif_channels_select" filtrava
-- `deleted_at IS NULL` como primeira condicao AND, bloqueando qualquer
-- leitura de canais soft-deleted mesmo pros donos/saas_admin. Isso impedia
-- o fluxo de reativacao (chooser e pagina do tenant nao conseguiam detectar
-- que havia canal deletado pra oferecer "Reativar").
--
-- Solucao: remover o filtro da policy. O controle de soft-delete fica no
-- codigo aplicativo (cada query filtra .is('deleted_at', null) quando
-- quer apenas canais ativos). Canais soft-deleted continuam acessiveis
-- apenas pros roles autorizados (owner, membro do tenant, saas_admin) —
-- a privacidade nao muda.
-- ==========================================================================

DROP POLICY IF EXISTS notif_channels_select ON public.notification_channels;

CREATE POLICY notif_channels_select
    ON public.notification_channels
    FOR SELECT
    USING (
        public.is_saas_admin()
        OR owner_id = auth.uid()
        OR tenant_id IN (
            SELECT tm.tenant_id
            FROM public.tenant_members tm
            WHERE tm.user_id = auth.uid()
              AND tm.status = 'active'
        )
    );

COMMENT ON POLICY notif_channels_select ON public.notification_channels IS
    'Owner, membros ativos do tenant e saas_admin leem todos os canais (inclusive soft-deleted). Filtro deleted_at fica no codigo aplicativo.';
