-- mis_meseros filtraba en silencio (0 filas) para quien no es dueño en vez de
-- fallar explicito, a diferencia de rendimiento_meseros/reporte_pagos que ya
-- usan 'raise exception Sin permiso'. Alineado por consistencia (detectado
-- por el test del rol encargado: no rompia seguridad -- no veia datos ajenos
-- igual -- pero era menos explicito que el resto de RPCs solo-dueño).
DROP FUNCTION public.mis_meseros();
CREATE OR REPLACE FUNCTION public.mis_meseros()
 RETURNS TABLE(mesero_id uuid, nombre text, telefono text, correo text, rol text, creado_en timestamp with time zone)
 LANGUAGE plpgsql STABLE SECURITY DEFINER SET search_path TO 'public'
AS $function$
declare v_rest uuid;
begin
  v_rest := fn_mi_restaurante();
  if not (fn_es_dueno_de(v_rest) or fn_es_admin()) then
    raise exception 'Sin permiso';
  end if;
  return query
  select pf.id, pf.nombre, pf.telefono, u.email::text, pf.rol, pf.creado_en
  from public.perfiles pf
  join auth.users u on u.id = pf.id
  where pf.restaurante_id = v_rest
    and pf.rol in ('staff','encargado')
  order by pf.creado_en desc;
end;
$function$;
