where(function (Builder $query): void { $query ->whereNull(Anime::ATTRIBUTE_START_DATE) ->orWhereRaw('RIGHT('.Anime::ATTRIBUTE_START_DATE.', 2) = ?', ['00']) ->orWhereNull(Anime::ATTRIBUTE_END_DATE) ->orWhereRaw('RIGHT('.Anime::ATTRIBUTE_END_DATE.', 2) = ?', ['00']); }) ->with([ Anime::RELATION_RESOURCES => fn (Relation $query) => $query->where(ExternalResource::ATTRIBUTE_SITE, ResourceSite::ANILIST->value), ]) ->orderBy(Anime::ATTRIBUTE_ID) ->chunk(20, function (Collection $anime) use (&$failed) { $ids = $anime->pluck(Anime::ATTRIBUTE_ID)->values()->implode(', '); $this->info('Anime IDs: '.$ids); $action = new AnimeDateAction(); $result = Anime::withoutEvents(fn () => Anime::withoutTimestamps(fn (): ActionResult => $action->handle($anime))); if ($result->hasFailed()) { $this->error('Action failed: '.$result->getMessage()); $failed = true; return false; } Sleep::sleep(5); }); return $failed ? 1 : 0; } protected function validator(): Validator { return ValidatorFacade::make($this->options(), []); } }