. */ namespace Poniverse\Ponyfm\Console\Commands; use Illuminate\Console\Command; use Illuminate\Database\Eloquent\Collection; use Poniverse\Ponyfm\Models\Album; use Poniverse\Ponyfm\Models\Playlist; use Poniverse\Ponyfm\Models\Track; use Poniverse\Ponyfm\Models\User; class RebuildSearchIndex extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'rebuild:search'; /** * The console command description. * * @var string */ protected $description = 'Rebuilds the Elasticsearch index.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $totalTracks = Track::withTrashed()->count(); $totalAlbums = Album::withTrashed()->count(); $totalPlaylists = Playlist::withTrashed()->count(); $totalUsers = User::count(); Track::withTrashed()->chunk(200, function(Collection $tracks) { foreach($tracks as $track) { $this->info("Processing track #{$track->id}..."); $track->ensureElasticsearchEntryIsUpToDate(); } }); Album::withTrashed()->chunk(200, function(Collection $albums) { foreach($albums as $album) { $this->info("Processing album #{$album->id}..."); $album->ensureElasticsearchEntryIsUpToDate(); } }); // Playlist::withTrashed()->chunk(200, function(Collection $playlists) { // foreach($playlists as $playlist) { // $this->info("Processing playlist #{$playlist->id}..."); // $playlist->ensureElasticsearchEntryIsUpToDate(); // } // }); // // User::withTrashed()->chunk(200, function(User $user) { // $user->ensureElasticsearchEntryIsUpToDate(); // }); } }