github_stars_imported_at !== null) { return; } $login = $this->github->login($user->github_id); $ownerIds = $login === null ? [] : $this->github->starredOwnerIds($login, self::MaxPages); $rows = collect($ownerIds) ->reject(fn (string $id): bool => $id === $user->github_id) ->countBy() ->map(fn (int $count, int|string $id): array => [ 'user_id' => $user->id, 'github_id' => (string) $id, 'repositories_count' => $count, 'created_at' => now(), ]) ->values() ->all(); DB::transaction(function () use ($user, $rows): void { DB::table('starred_github_owners')->insertOrIgnore($rows); $user->update(['github_stars_imported_at' => now()]); }); } }