where('created_at', '<', Carbon::now()->subHour()) ->orderBy('refresh_date') ->orderBy('aggregate_view') ->get(); if ($items->isEmpty()) { Log::get()->info('orders:refresh-aggregates queue empty'); return ['processed' => 0, 'failed' => 0]; } $processed = 0; $failed = 0; foreach ($items as $item) { $view = $item->aggregate_view; $date = $item->refresh_date; try { $this->refresher->refresh($view, $date); AggregateRefreshQueue::query() ->where('refresh_date', $date) ->where('aggregate_view', $view) ->delete(); $processed++; } catch (Throwable $e) { Log::get()->error('orders:refresh-aggregates failed', [ 'view' => $view, 'date' => $date, 'error' => $e->getMessage(), ]); $failed++; } } Log::get()->info('orders:refresh-aggregates done', [ 'processed' => $processed, 'failed' => $failed, ]); return ['processed' => $processed, 'failed' => $failed]; } }