From be69acd47a1ea6809e539a1333be6bdfc574e331 Mon Sep 17 00:00:00 2001 From: Kyrch Date: Fri, 22 Mar 2024 10:44:35 -0300 Subject: [PATCH] feat: anime images should be moved (#631) * feat: anime images should be moved * feat: anime images should be moved --- .../MoveImageToAppropriateFolderSeeder.php | 74 ++++++++++++++++++- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/database/seeders/Wiki/Image/MoveImageToAppropriateFolderSeeder.php b/database/seeders/Wiki/Image/MoveImageToAppropriateFolderSeeder.php index b0aa0a0e4..4767d91c6 100644 --- a/database/seeders/Wiki/Image/MoveImageToAppropriateFolderSeeder.php +++ b/database/seeders/Wiki/Image/MoveImageToAppropriateFolderSeeder.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace Database\Seeders\Wiki\Image; use App\Enums\Models\Wiki\ImageFacet; +use App\Models\Wiki\Anime; use App\Models\Wiki\Artist; use App\Models\Wiki\Image; use App\Models\Wiki\Studio; @@ -24,6 +25,7 @@ class MoveImageToAppropriateFolderSeeder extends Seeder public function run(): void { $this->grillFacetImageSeeder(); + $this->animeImageSeeder(); $this->artistImageSeeder(); $this->studioImageSeeder(); } @@ -33,7 +35,7 @@ class MoveImageToAppropriateFolderSeeder extends Seeder try { DB::beginTransaction(); - $chunkSize = 10; + $chunkSize = 100; /** @var FilesystemAdapter $fs */ $fs = Storage::disk(Config::get('image.disk')); $images = Image::query()->where(Image::ATTRIBUTE_FACET, ImageFacet::GRILL)->get(); @@ -69,12 +71,78 @@ class MoveImageToAppropriateFolderSeeder extends Seeder } } + protected function animeImageSeeder(): void + { + try { + DB::beginTransaction(); + + $chunkSize = 100; + /** @var FilesystemAdapter $fs */ + $fs = Storage::disk(Config::get('image.disk')); + $animes = Anime::query()->where(Anime::ATTRIBUTE_ID, '>', 0)->whereHas(Image::TABLE, function (Builder $query) { + $query->where(Image::ATTRIBUTE_PATH, 'not like', '%/%'); + })->get(); + + foreach ($animes->chunk($chunkSize) as $chunk) { + foreach ($chunk as $anime) { + if ($anime instanceof Anime) { + $images = $anime->images()->get(); + + if (count($images) === 0) continue; + + $largeCover = $images->where(Image::ATTRIBUTE_FACET, ImageFacet::COVER_LARGE)->first(); + $smallCover = $images->where(Image::ATTRIBUTE_FACET, ImageFacet::COVER_SMALL)->first(); + + if (!empty($largeCover)) { + $largeCoverOldPath = $largeCover->path; + $largeCoverNewPath = "anime/large-cover/{$largeCover->path}"; + + $fs->move($largeCoverOldPath, $largeCoverNewPath); + + $largeCover->update([ + Image::ATTRIBUTE_PATH => $largeCoverNewPath, + ]); + + echo $largeCoverOldPath . ' moved to ' . $largeCoverNewPath . "\n"; + } + + if (!empty($smallCover)) { + $smallCoverOldPath = $smallCover->path; + $smallCoverNewPath = "anime/small-cover/{$smallCover->path}"; + + $fs->move($smallCoverOldPath, $smallCoverNewPath); + + $smallCover->update([ + Image::ATTRIBUTE_PATH => $smallCoverNewPath, + ]); + + echo $smallCoverOldPath . ' moved to ' . $smallCoverNewPath . "\n"; + } + + DB::commit(); + } + } + sleep(5); + } + + echo "anime images done\n"; + + + } catch (Exception $e) { + echo 'error ' . $e->getMessage() . "\n"; + + DB::rollBack(); + + throw $e; + } + } + protected function artistImageSeeder(): void { try { DB::beginTransaction(); - $chunkSize = 10; + $chunkSize = 100; /** @var FilesystemAdapter $fs */ $fs = Storage::disk(Config::get('image.disk')); $artists = Artist::query()->where(Artist::ATTRIBUTE_ID, '>', 0)->whereHas(Image::TABLE, function (Builder $query) { @@ -139,7 +207,7 @@ class MoveImageToAppropriateFolderSeeder extends Seeder try { DB::beginTransaction(); - $chunkSize = 10; + $chunkSize = 100; /** @var FilesystemAdapter $fs */ $fs = Storage::disk(Config::get('image.disk')); $studios = Studio::query()->where(Studio::ATTRIBUTE_ID, '>', 0)->whereHas(Image::TABLE, function (Builder $query) {