withSum('servers', 'memory') ->withSum('servers', 'disk') ->withSum('servers', 'cpu') ->where('public', true) ->get(); return $nodes ->filter(fn (Node $node) => !$tags || collect($node->tags)->intersect($tags)) ->filter(fn (Node $node) => $node->isViable($memory, $disk, $cpu)); } }