2024-05-23 16:54:06 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Database\Factories;
|
|
|
|
|
|
2024-06-12 19:51:41 +02:00
|
|
|
use App\Importers\Image\Jobs\FinishImageModification;
|
2024-05-23 16:54:06 +02:00
|
|
|
use App\Models\Album;
|
|
|
|
|
use App\Models\Image;
|
|
|
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
|
use Illuminate\Support\Facades\Http;
|
|
|
|
|
use Illuminate\Support\Facades\Storage;
|
2024-06-01 03:10:30 +02:00
|
|
|
use Intervention\Image\Laravel\Facades\Image as InterventionImage;
|
|
|
|
|
use \App\Importers\Image\Jobs\GenerateThumbnail;
|
|
|
|
|
use \App\Importers\Image\Jobs\GenerateFullscreen;
|
2024-06-05 14:12:54 +02:00
|
|
|
use Illuminate\Support\Facades\Bus;
|
2024-05-23 16:54:06 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Image>
|
|
|
|
|
*/
|
|
|
|
|
class ImageFactory extends Factory
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Configure the model factory.
|
|
|
|
|
*/
|
|
|
|
|
public function configure(): static
|
|
|
|
|
{
|
|
|
|
|
return $this->afterCreating(function (Image $image) {
|
|
|
|
|
$height = rand(2000, 4000);
|
|
|
|
|
$width = rand(2000, 4000);
|
|
|
|
|
$image_content = Http::get("https://picsum.photos/{$width}/{$height}")->body();
|
2024-06-01 03:10:30 +02:00
|
|
|
$encoded = InterventionImage::read($image_content)->toAvif(config('gallery.image.quality'));
|
2024-06-05 14:12:54 +02:00
|
|
|
$image_path = $image->album_id . '/original/' . $image->id . '.avif';
|
|
|
|
|
Storage::disk('images')->put($image_path, $encoded);
|
2024-06-01 03:10:30 +02:00
|
|
|
|
2024-06-12 19:51:41 +02:00
|
|
|
Bus::chain([
|
|
|
|
|
Bus::batch([
|
|
|
|
|
new GenerateThumbnail($image),
|
|
|
|
|
new GenerateFullscreen($image),
|
|
|
|
|
]),
|
|
|
|
|
new FinishImageModification($image),
|
|
|
|
|
])->dispatch();
|
2024-05-23 16:54:06 +02:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Define the model's default state.
|
|
|
|
|
*
|
|
|
|
|
* @return array<string, mixed>
|
|
|
|
|
*/
|
|
|
|
|
public function definition(): array
|
|
|
|
|
{
|
|
|
|
|
return [
|
|
|
|
|
'album_id' => Album::all()->random(1)->first()->id,
|
|
|
|
|
'isCover' => false,
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|