feat: anime images should be moved (#631)

* feat: anime images should be moved

* feat: anime images should be moved
This commit is contained in:
Kyrch authored and GitHub committed 2024-03-22 10:44:35 -03:00
1 parent 46fcecd5ab
commit be69acd47a
1 file changed
+71 -3
@@ -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) {