-- drop function if exists public.mascara_cpf_lgpd(TEXT)
CREATE OR REPLACE FUNCTION public.mascara_cpf_lgpd(in_cpf TEXT)
RETURNS TEXT AS $$
DECLARE
    clean_cpf TEXT;
    result TEXT;
BEGIN

    clean_cpf := regexp_replace(in_cpf, '[^0-9]', '', 'g');

    IF char_length(clean_cpf) <> 11 THEN
      RAISE EXCEPTION 'CPF inválido. Deve conter 11 dígitos.';
    END IF;

    result := substring(clean_cpf FROM 1 FOR 3) || '.XXX.XXX-' || substring(clean_cpf FROM 10 FOR 2);
  
    RETURN result;
END;
$$ LANGUAGE plpgsql;








