Files
project-minnesota/database/factories/ImageFactory.php

54 lines
1.6 KiB
PHP
Raw Normal View History

2024-05-23 16:54:06 +02:00
<?php
namespace Database\Factories;
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-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) {
if($image->album->images->sortBy('id')->first()->id == $image->id) {
$image->isCover = true;
$image->save();
}
$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'));
Storage::disk('images')->put($image->album->id . '/original/' . $image->id . '.avif', $encoded);
GenerateThumbnail::dispatch($image);
GenerateFullscreen::dispatch($image);
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,
];
}
}